Delphi 重新油漆油漆盒不起作用
将图像绘制到颜料盒中的函数从到2个位置调用,如果从TPagecontrol pagechange调用,则可以正常工作,但如果从form.formresize(..)调用,则会绘制图像,但之后会立即重新绘制颜料盒,使其完全变白。我不知道这个恶行是从什么顺序来的---Delphi 重新油漆油漆盒不起作用,delphi,Delphi,将图像绘制到颜料盒中的函数从到2个位置调用,如果从TPagecontrol pagechange调用,则可以正常工作,但如果从form.formresize(..)调用,则会绘制图像,但之后会立即重新绘制颜料盒,使其完全变白。我不知道这个恶行是从什么顺序来的--- 您不能自己调用paint boxOnPaint事件处理程序。执行此操作时,油漆盒画布未正确准备。要强制绘制框重新绘制,需要调用Invalidate或repaint方法。像这样: PaintBox1.Invalidate; 或 调用I
您不能自己调用paint box
OnPaint
事件处理程序。执行此操作时,油漆盒画布未正确准备。要强制绘制框重新绘制,需要调用Invalidate
或repaint
方法。像这样:
PaintBox1.Invalidate;
或
调用Invalidate
会导致异步重新绘制。控件被标记为脏,当消息队列下一个为空时,将合成WM_PAINT
消息并重新绘制控件
调用重新绘制
强制执行同步绘制循环。也就是说,将执行绘制,然后返回Repaint
功能
除非您有强制同步重新绘制的特殊原因,否则我建议您调用Invalidate
@Sertac在一条评论中建议您的绘制代码不在
OnPaint
处理程序中。如果是这样的话,那将是一个更大的问题。必须将所有绘制代码放入附加到绘制框OnPaint
事件的事件处理程序中。您不能自己调用绘制框OnPaint
事件处理程序。执行此操作时,油漆盒画布未正确准备。要强制绘制框重新绘制,需要调用Invalidate
或repaint
方法。像这样:
PaintBox1.Invalidate;
或
调用Invalidate
会导致异步重新绘制。控件被标记为脏,当消息队列下一个为空时,将合成WM_PAINT
消息并重新绘制控件
调用重新绘制
强制执行同步绘制循环。也就是说,将执行绘制,然后返回Repaint
功能
除非您有强制同步重新绘制的特殊原因,否则我建议您调用Invalidate
@Sertac在一条评论中建议您的绘制代码不在OnPaint
处理程序中。如果是这样的话,那将是一个更大的问题。必须将所有绘制代码放入附加到绘制框OnPaint
事件的事件处理程序中
PaintBox1.Repaint;