社区
界面
帖子详情
紧急高分求助:绘图操作 如何设置画刷使得调用CDC::Rectangle()函数后,矩形内部不填充(保留背景)
LeafBoy
2004-08-24 11:47:23
视图背景是一个位图。希望画矩形后,矩形内部不填充,保留背景,如何实现?
还有,如何擦除线条,恢复背景?
...全文
622
13
打赏
收藏
紧急高分求助:绘图操作 如何设置画刷使得调用CDC::Rectangle()函数后,矩形内部不填充(保留背景)
视图背景是一个位图。希望画矩形后,矩形内部不填充,保留背景,如何实现? 还有,如何擦除线条,恢复背景?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gotopt
2004-10-14
打赏
举报
回复
COLORREF XorColor = pDC->GetBkColor() ^ GetPenColor();
如何获得GetPenColor(), DC中没有此函数呀??
zhaogaojian
2004-08-25
打赏
举报
回复
没关系,XOR画笔不会影响背景,你在背景上画一条线遮挡背景,第二次再画上一条线
原来的背景就又显示出来了
0001 原来背景
画笔1010
1:1011
2:XOR 1011+1010=0001;恢复背景
csdn_cht
2004-08-24
打赏
举报
回复
记得保存选出的画刷,用完恢复哦。!
csdn_cht
2004-08-24
打赏
举报
回复
flyelf(空谷清音)正解
选中系统库存画刷:
pDC->SelectObject(GetStockObject(NULL_BRUSH);或
pDC->SelectObject(GetStockObject(HOLLOW_BRUSH);都行
flyelf
2004-08-24
打赏
举报
回复
pDC->SelectObject(GetStockObject(NULL_BRUSH);
DentistryDoctor
2004-08-24
打赏
举报
回复
LOGBRUSH logBrush;
logBrush.lbStyle = NULL_BRUSH;
logBrush.lbColor = 0;
logBrush.lbHatch = 0;
// Declare an uninitialized CBrush
CBrush brush;
// and initialize it with the LOGBRUSH.
brush.CreateBrushIndirect(&logBrush);
// Select the brush, and perhaps a pen into
// the device context.
CBrush* pOldBrush = (CBrush*)pDC->SelectObject(&brush);
....
pDC->SelectObject(pOldBrush);
OK!
DentistryDoctor
2004-08-24
打赏
举报
回复
选择一个空的画刷!
LeafBoy
2004-08-24
打赏
举报
回复
to : zhaogaojian(米柑年成)
如果背景是位图,不只是一种颜色,该如何处理?谢谢
zhaogaojian
2004-08-24
打赏
举报
回复
擦除线条,恢复背景这个最好用异或笔操作:下面是对一个矩形的移动操作,如果擦除第二段代码不需要
CPoint point;
COLORREF XorColor = pDC->GetBkColor() ^ GetPenColor();
CPen pen(PS_DOT, 1, XorColor), *oldpen;
int oldmode = pDC->GetROP2();
oldpen = pDC->SelectObject(&pen);
pDC->SetROP2(R2_XORPEN);
//首先删除原矩形
pDC->MoveTo(m_x1,m_y1);//m_x1,m_x2,m_y1,m_y2是矩形四顶点的坐标这四句话
//是擦除原来画的矩形,
pDC->LineTo(m_x2,m_y1);
pDC->LineTo(m_x2,m_y2);
pDC->LineTo(m_x1,m_y2);
pDC->LineTo(m_x1,m_y1);
//修改新图形坐标
m_x1 += x-m_oldx, m_y1 += y-m_oldy;//对距形进行移动并在新位置画矩形
m_x2 += x-m_oldx, m_y1 += y-m_oldy;
pDC->MoveTo(m_x1,m_y1);
pDC->LineTo(m_x2,m_y1);
pDC->LineTo(m_x2,m_y2);
pDC->LineTo(m_x1,m_y2);
pDC->LineTo(m_x1,m_y1);
//以下恢复DC
pDC->SetROP2(oldmode);
pDC->SelectObject(oldpen);
pen.DeleteObject();//释放笔资源
用局部更新,或位图Bitblt速度都是较慢的,而且局部更新不容易控制
月光莫利亚
2004-08-24
打赏
举报
回复
呵呵,画四条边也可。
qianhongchong
2004-08-24
打赏
举报
回复
CDC::SelectStockObject (NULL_BRUSH)
枫雁
2004-08-24
打赏
举报
回复
SelectStockObject(NULL_BRUSH)
zhujianping_es
2004-08-24
打赏
举报
回复
选择一个空的画刷!
GDI+编程小结
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003
操作
系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选。 一、...
GDI+简介
一、 GDI+的特点和新增功能 GDI+与GDI一样,都具有设备无关性。应用程序的程序员可利用GDI+这样的图形设备接口在屏幕或打印机上显示信息,而不需要考虑特定显示设备的具体情况。应用程序的程序员
调用
GDI+类提供的方法,而这些方法又反过来相应地
调用
特定的设备驱动程序。GDI+将应用程序与图形硬件隔离,而正是这种隔离允许开发人员创建设备无关的应用程序。 1、 GDI...
GDI+编程
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003
操作
系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选。 一、 GDI+的特点和新增
GDI+编程说明及小结
GDI+编程说明及小结(叙述较为全面) 原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003
操作
系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GD
Windows GDI+ 详解
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003
操作
系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。 GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选。 一、
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章