设有两个按键,一个键为初始化画布,一个键按一下只画一条线,为什么画线时屏幕会闪一下,请哪位高人指点一下.procedure TForm1.Button2Click(Sender: TObject);
begin
  image1.Canvas.Pen.Color := clblack;
  image1.Canvas.Brush.Color := clblack;
  image1.Canvas.Rectangle(0, 0, image1.Width, image1.Height);end;procedure TForm1.Button3Click(Sender: TObject);
var
  i:integer;
begin
//    for i:=0 to 10000 do
    begin
//     Button2Click(self);
   image1.Canvas.Pen.Color := clred;
   image1.Canvas.MoveTo(20,20);
   image1.Canvas.LineTo(100,100);
//   end;
end;

解决方案 »

  1.   

    Form1.DoubleBuffered := True;
      

  2.   

    我拿你的运行了一下,没有出现闪烁。
    是否还有别的代码?如果没有的话,我可以肯定的说,真的不闪烁啊。
    要不然加一句form1.doublebuffered:=true;吧。
      

  3.   

    DoubleBuffer设为True 在这个小程序里问题是解决了,可主要是想应用在高速采集数据画图中.不知道是否有其它好办法?
      

  4.   

    可以考虑使用delphix 使用directx技术来实现更高效率的绘图。或者试下使用gdiplus+
      

  5.   

    gdiplus+……不是用在這裡的,那效率……還不如閃閃好了……
      

  6.   

    那你就搜搜“双缓冲”技术。要效率再高的话就从驱动入手,像大型图形游戏那样,DelphiX可以试试。看你需求了。
      

  7.   

    有很多办法可以提高效率,自己实现DoubleBuffer是一种比较好的解决方案。
      

  8.   

    多高速?
    通常 100 kb / s 以下的用 TCanvas ,够了。
    再高一点,DirectX 吧。