关于画笔pen的一个有关问题
发布时间:2011-06-23 14:22:52 文章来源:www.iduyao.cn 采编人员:星星草
关于画笔pen的一个问题
CPen penred(PS_SOLID,1,RGB(255,0,0));
CPen *oldpen=NULL;
oldpen=pDC->SelectObject(&penred);
pDC->MoveTo(300,100);
pDC->LineTo(400,100);
pDC->SelectObject(oldpen);
弱弱的问下:oldpen=pDC->SelectObject(&penred);是把新画笔的指针传递给SelectObject()函数,函数返回一个指向原来旧画笔的指针,为什么不是把新画笔赋值给旧画笔的意思?是怎么运算的?
------解决方案--------------------
怎么说呢 我也不会说的太学术化 就根据自己的认识通俗点说下自己的理解吧.
给你打个比方 . 比如用一副完整扑克牌,你想玩某个游戏,而这种游戏需要的是2张小王,而不是原来的一张大王一张小王. 所以你就去借另一副扑克牌的小王 代替了这副牌的大王 .
这个比方里 你要用来玩游戏的那副扑克拍就是CDC,大王就是oldpen,借来的小王就是penred;
很明显 为了这副扑克牌(CDC)的完整性在这次游戏后不被破坏 你要在结束游戏的时候把 大王归还(pDC->SelectObject(oldpen);),只有这样才能保证CDC的稳定性.
这里 CDC就相当于一个存放各种设备信息的仓库 比如画笔 字体等 ... 可是我们不能直接用指针赋值的方式来更换CPen ,因为CPen真正使用者是CDC ,需要被它选择(SelectObject)后才能被它使用.而单纯的在外部更换了CPen而不通知CDC是没有效果的.
好了吃午饭去了...
------解决方案--------------------
oldpen=pDC->SelectObject(&penred);
就是将新画笔选择进入CDC设备,进行画图。图画好了以后,就要习惯性的还原设备默认的画笔,于是再
pDC->SelectObject(oldpen);
把默认的画笔选入CDC。
不是往画笔里面选,是往CDC指针里面选。画图操作是要在CDC设备上进行的
一开始不习惯,用久了就明白了
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于visual studio 2005的工程文件*.vcproj的问题
请问:Visual Studio 2005 新建一个工程之后,会自动生产一个*.vcproj的一个文件,这...
-
用MFC画图的问题
我现在要用随机数产生300个固定的点保存在数组中,并在ondraw里画出这300个点,而且通过定时器使这300个点做运动。...
-
VS2010中的C++怎么连接数据库?
之前一直用VC++6.0的、现在想学学用最新的VS、但是感觉连接数据库和之前不一样了、具体应该怎么弄...
-
CLI编程 高手帮忙
我现在用C++/CLI 混编,
我有一个方法, 是调用一个C 的类库 得到一个 char * 的值
现在我...
-
新手求教::VC.NET2003里面的"添加变量"菜单变灰了,怎么弄?
最近学着用.net写程序,以前用的是6.0,不知道为什么我设计的EDIT Con...
-
刚学习vc.net 请教一个String做参数的问题,请高手指教一下
下面的代码为什么不能编译呢,出现这个错误呢
.\clr.cpp(12) : error C3...
-
VS2003中通过ADO取SQL2003中bigint 负值变正值的问题,求助!
在SQL2003中 数据库中假设 一个bigint类型的数据位-1234这样的值,通过如...
-
新手学习VC用那个版本的编译器好!
新手学习VC用那个版本的编译器好!?
------解决方案--------------------
VC++6.0
------解决...
-
正则表达式
有这样的字符串
"1,',2"",3"
希望将单个的"替换成单引号,将连续两个的""替换成一个双引号。
正则表达式该如何写。
...
-
为什么<<精通MFC>>附带的源程序不能编译成功
vc2010编译后有两个错误提示,分别如下,
错误一:
1>c:\program files\microsoft vi...