我在一个图片框上有一个透明的矩形,如果我点击下一个,下一个图像就会出现并绘制透明矩形。问题是闪烁,当从一个图像移动到另一个图像时,透明矩形闪烁。请帮助我如何摆脱这个问题。我想消除闪烁,请帮助。
由于
答案 0 :(得分:3)
双重缓冲。基本上创建了一个将显示的缓存图像。然后,当您需要重绘表面时,请将其转换为另一个图像,并在完成绘制后,将该图像与缓存的图像进行交换。这样你就不会有任何闪烁。
我可以给你写一个例子,但是我不知道你是在编写c ++还是C#,因为你已经将它们都添加为标签。以下是C#http://www.developerfusion.com/code/4668/double-buffering-in-net/
中手动双缓冲的示例答案 1 :(得分:1)
你是如何实现它的?我有一个类似的问题,通过继承Control,覆盖OnPaint来绘制我的图像和透明背景等,并覆盖OnPaintBackground并且什么都不做,实现了我自己的图片框。 (OnPaintBackground的默认行为是绘制控件的背景,如果控制整个控件的绘制,则无需执行此操作)
如果需要,您还可以在OnPaint中实现双缓冲,以便在您的绘画操作需要时间时减少撕裂。