请教做过符号库的高手,如何在VC下实现用符号填充直线的功能。

dengyl 2004-10-26 07:09:36
请教做过符号库的高手,如何在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来裁剪?望高手指点。
...全文
110 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
中级伴读 2004-11-20
  • 打赏
  • 举报
回复
俺也有同样的问题啊
dengyl 2004-10-29
  • 打赏
  • 举报
回复
To systemprogrammer(程序员):
嗯,的确,用矢量的符号填充!!
systemprogrammer 2004-10-28
  • 打赏
  • 举报
回复
是不是用矢量符号填充,效果会比较好呢?
我目前也是遇到了这个问题,正在寻找解决方法。
syy64 2004-10-27
  • 打赏
  • 举报
回复
又在这儿发帖了。
Uncommon 2004-10-27
  • 打赏
  • 举报
回复
密切关注
陪你着急

2,142

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧