请教做过符号库的高手,如何在VC下实现用符号填充直线的功能。
请教做过符号库的高手,如何在VC下实现用符号填充直线的功能。我用的方法是,定义一个逻辑画刷,让该画刷的图案是我想用的符号(我用的是位图),然后用这个画刷定义一个笔,绘制直线,如下代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); // 位图的大小是10*10象素
HBITMAP hBmp;
hBmp = HBITMAP(bmp);
LOGBRUSH LogBrush;
LogBrush.lbStyle = BS_PATTERN;
LogBrush.lbHatch = (LONG)hBmp;
CPen pen;
pen.CreatePen(PS_GEOMETRIC, 10, &LogBrush); // 创建笔,10个单位宽
CPen *pOldPen;
pOldPen = pDC->SelectObject(&pen);
pDC->SelectStockObject(BLACK_BRUSH);
pDC->MoveTo(0,0);
pDC->LineTo(0,100); // 画水平线
pDC->MoveTo(0,0)
pDC->LineTo(100, 100); // 画斜线,还应该将位图旋转相应角度后在填充!!
但是,效果很不好,我希望的是以一个位图的宽,以多个位图首尾相连地来填充直线(也就是在线的宽度上,是一个位图,在线的长度上是多个位图首尾相连的视觉效果)。但是这个方法的效果却是用多个位图的宽(或者是半个位图加半个位图,总不是一个位图的图案),多个位图首尾相连。
所以,我希望的就是,直线是以一个位图的宽来首尾相连多个位图填充,就像铁路那样。如果直线变宽,位图也要跟着变大,而不能出现直线的宽度上是几个位图填充的。
另外,画斜线,还应该将位图旋转相应角度后在填充,这样的效果才好。
该如何修改呢?该如何来做呢?
也许应该用其它方法?比如路径?用CRgn来裁剪?望高手指点。