急求回复:这个问题烦我近一周了!
我在对话框上画图形, 其先我画了个方形,然后由于计算变化,需要擦除掉原来的方形画
比方形小的图形,比如三角形,请问如何把原来的方形去掉?
我尝试用invalidaterect函数,然后再画图,但是新画的图怎么都看不到了?请问是怎么回
事?
我在别的论坛提问了,有些人建议背景重画,但是我的背景并不是单调的背景,而是一张图,
如果要实现背景重画,需要怎么实现? 我可以定位图形变化的背景位置,但是具体的实现
过程请那位兄台赐教!
谢谢。
我在对话框上画图形, 其先我画了个方形,然后由于计算变化,需要擦除掉原来的方形画
比方形小的图形,比如三角形,请问如何把原来的方形去掉?
我尝试用invalidaterect函数,然后再画图,但是新画的图怎么都看不到了?请问是怎么回
事?
我在别的论坛提问了,有些人建议背景重画,但是我的背景并不是单调的背景,而是一张图,
如果要实现背景重画,需要怎么实现? 我可以定位图形变化的背景位置,但是具体的实现
过程请那位兄台赐教!
谢谢。
创建一个DC,大小为擦除的尺寸,SetViewportOrg为具体的位置,发送WM_ERASEBKGND给对话框,让它在新DC上画背景,然后在背景上画三角,再贴回原DC
i am trying!
画三角或方块就直接在dc上画,在OnPaint消息里
先照这种方法你改下,看还有问题吗
应该指定刷新的Rect吧
mDlgBkBmp=new CBitmap;
mDlgBkBmp->LoadBitmap(IDB_BITMAP1);
mBrush.CreatePatternBrush(mDlgBkBmp);
然后我重载CFanGameDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
添加代码 return mBrush;画变化的图型的时候,我是要根据外在的计算,判断某个区域发生图型变换,这样,我就把该小区域InvalidateRect() , 然后在该区域上画变化后的图形形状. 这样就造成了图形显示一闪而过.而这一闪并没有对背景造成影响! 我尝试用内存法(??? 是不是就是所谓的双缓冲法),我现在内存设备环境中画图形,然后再bitblt到屏幕上,最后一个参数设置成SRCINVERT, 然后所画的图形也是一闪一闪,而且闪得非常怪异,有时候一些区域内图形有些显示出来,有些没有显示出来。 这里有一个问题就是我设置的内存位图m*n,但是我所画的区域并没有整个区域都画,所以用SCRCOPY参数的时候,就会把一些我再内存中没有画的区域显示到屏幕上,变成黑的,不知道有没有办法把内存位图初始化成为一种透明颜色的方式?
打开ClassWizard
-> "Class info" tab
->"Advance Options"
->"Message filter"
->改为"Window"