功能要求是这样的,要在一个图形上,显示一个矩形的可移动的透明的测量刻度尺我用的GDI画的,目前是直接在一个面板控件表面上进行绘图,把绘图代码放在控件刷新事件里,只要控件刷新时,这份图形都会重绘。移动的刻度尺我是单做的一个控件,因为要对尺子进行拖放拉伸等操作,直接在面板控件表面绘图画一个尺子不好进行操作。我现在碰到的问题是:我在面板上绘好图后,对尺子进行拖放和拉伸操作时,都会引发面板控件刷新事件,拖动尺子时,面板重复刷新,屏幕闪烁得厉害。
我想只让面板局部刷新,但是不知道怎么具体实现。请问对于实现这个功能,大家一般是个什么思路进行绘图操作?
我想只让面板局部刷新,但是不知道怎么具体实现。请问对于实现这个功能,大家一般是个什么思路进行绘图操作?
你说的是哪个控件使用这个设置?
尺子控件还是面板控件(panel),尺子控件是我自己写的,我有尝试过SetStyle,不过当时是为了使尺子透明,后来这个方法失败了。不过屏幕闪烁的问题,是面板控件重绘次数太多造成的,跟尺子控件没什么太大关系吧
我这个平时普通的控件是用GDI渲染的
看你所言GDI渲染的没办法在刷新的时候不闪一下,那你就换呗
后来我不得已,把原来的绘图画到内存位图对象上,然后把内存位图对象当成背景图,这样的话,就不用刷新了。
背景图的遮挡绘制是windows自己的机制处理的,不用老绘制
应在重绘事件中写代码,而不是频繁的Refresh。