客户区刷新(50分)

  • 主题发起人 主题发起人 juky_ma
  • 开始时间 开始时间
J

juky_ma

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个Form上放一个Image1,并且它是透明的,如后我在Image1的区域中放2个
Image,分别是Image2,Image3.并且image2,image3之间连一条直线,然后在image2的
mousemove事件中有如下代码进行移动时的重画:
TCanvas *my=Image1->Canvas;
my->Pen->Color=Form1->Color;
my->MoveTo(Image2->Left,Image2->Top);
my->LineTo(Image3->Left,Image3->Top);
Image2->Left=Image2->Left+X;
Image2->Top=Image2->Top+Y;
my->Pen->Color=clBtnText;
my->MoveTo(Image2->Left,Image2->Top);
my->LineTo(Image3->Left,Image3->Top);

但是重画时,屏幕闪烁很厉害,请问该如何消除这一刷新问题?
 
把Form的DoubleBuffered设为True试一试, 在FormCreate里写代码。
 
试过的,客户区不闪烁了,但是间图片移到新位置时重画联线,会很慢。
 
开个线程吧!
 
使用多线程解决问题.
 
多线程并不能解决这个问题
 
多线程,我不会!
 
怎样在内存区画好这幅图,再贴上来,应该就可以,但我不知怎样在内存区绘图?
 
呵,
onmousemove:
image1.canvas.Pen.Mode:=pmnotxor;
....这是画
onmousemoveup:
image1.canvas.pen.mode:=pmcopy;
这儿也画一遍
 
后退
顶部