这样的情况不知道各位有没有遇到过啊?

时间:2022-01-05 20:55:25
我在PAINT里面做了很多事:

我得到的是CPaintDC dc(this);
在一个视图上画很多矩形,可能在一个VIEW上面要画上百个矩形,还有画一条在屏幕上可以水平跑动的线,来模拟可以滚动的视图的感觉。

但是当不断的重画页面时,这些矩形和线条就开始变形了,感觉就像线条是没有了灰度似的,以前的灰色部分变成了黑色,如果变形的更厉害的时候就会发生坐标混乱,本来应该是在客户区中画的线条跑到物理坐标上面去了。

这个问题困扰了好久,如有高手能解决,分数不是问题!

12 个解决方案

#1


我顶啊!

#2


高手们,冒个泡啊!


谢谢了!

#3


继续顶!

#4


重画时是否把原来的矩形又重新复制了,是不是又产生新的对象了?千万不到在ONDRAW()中NEW对象,你的机器会受不了的,跟踪调试一下

#5


DC不是new 出来的,是直接声明的是一个对象,CPaintDC dc(this);
没有用到ondraw,只是用到了onpaint()
重画把原来的矩形复制不可能啊,我是通过计算坐标值来重画的

#6


看内存的使用在变形了时候也没有增多

#7


按你说的不应该出问题,应该是代码有误吧。

#8


我的代码其实很简单的,如果只是在视图上画线,怎么也不会挂,如果我把我的那段Fillsolidrect的一堆代码加进去之后,就开始出现上面的一些问题了。

#9


那位大哥如果有兴趣,我可以EMAIL过去

#10


StarNCraft@hotmail.com

#11


百思不得其解!

#12


1.在OnDraw里试试
2.如果你用的是void FillSolidRect( int x, int y, int cx, int cy, COLORREF clr );
则有可能填充边界出问题。

#1


我顶啊!

#2


高手们,冒个泡啊!


谢谢了!

#3


继续顶!

#4


重画时是否把原来的矩形又重新复制了,是不是又产生新的对象了?千万不到在ONDRAW()中NEW对象,你的机器会受不了的,跟踪调试一下

#5


DC不是new 出来的,是直接声明的是一个对象,CPaintDC dc(this);
没有用到ondraw,只是用到了onpaint()
重画把原来的矩形复制不可能啊,我是通过计算坐标值来重画的

#6


看内存的使用在变形了时候也没有增多

#7


按你说的不应该出问题,应该是代码有误吧。

#8


我的代码其实很简单的,如果只是在视图上画线,怎么也不会挂,如果我把我的那段Fillsolidrect的一堆代码加进去之后,就开始出现上面的一些问题了。

#9


那位大哥如果有兴趣,我可以EMAIL过去

#10


StarNCraft@hotmail.com

#11


百思不得其解!

#12


1.在OnDraw里试试
2.如果你用的是void FillSolidRect( int x, int y, int cx, int cy, COLORREF clr );
则有可能填充边界出问题。