用CClientDC画线,如何取得当前的宽度

脑中有飞鸟 2012-03-22 08:10:15
用CClientDC画直线
dc.MoveTo(m_ptOrigin);
dc.LineTo(point);

可以用dc.SelectObject(&CPen)设置宽度颜色等等,可是如何获取当前系统的宽度(我不太清楚这样的叫法对不对)呢,就是画出的线条的width?
...全文
139 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tinary3v0 2012-03-24
  • 打赏
  • 举报
回复
CPen pn;
pn.CreatePen( PS_SOLID, 12, RGB( 0, 0, 255 ) ); //创建画笔 线宽12

SrcDC.SelectObject( pn ); //DC设置创建的画笔为当前画笔
SrcDC.Rectangle( myT );
SrcDC.FillRect( myT, &br );
SrcDC.Rectangle( xyT );
SrcDC.FillRect( xyT, &xr );

CPen* myp = SrcDC.SelectObject( &pn ); //设置当前画笔时,会返回一个指针存储先前画笔(注意这里&pn实际上可以为任何画笔,这一步执行的是SelectObject,会影响DC当前使用的画笔,因此后面一定要将DC的画笔恢复)
LOGPEN lpn; myp->GetLogPen( &lpn ); //取得逻辑画笔

POINT mm = lpn.lopnWidth;

INT penwd = mm.x; //取得线宽
的为
SrcDC.SelectObject( myp );//注意将画笔恢复

上面的代码是我自己根据CPen的函数找的,测试时是能够得到当前画笔的宽度的。
楼主一定要这样的功能? 画笔的宽度可以再自己设置画笔的时候事先用变量保存一下。
脑中有飞鸟 2012-03-24
  • 打赏
  • 举报
回复
谢了[Quote=引用 1 楼 tinary3v0 的回复:]

C/C++ code
CPen pn;
pn.CreatePen( PS_SOLID, 12, RGB( 0, 0, 255 ) ); //创建画笔 线宽12

SrcDC.SelectObject( pn ); //DC设置创建的画笔为当前画笔
SrcDC.Rectangle( myT );
SrcDC.Fil……
[/Quote]

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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