最近作了一个作图软件,让使用者在image上画图,可是在画图时屏幕老是闪,请问为什么?

解决方案 »

  1.   

    paintbox画图时不闪,但不能实现文件保存,请问如何解决?
      

  2.   

    iamge上放一个paintbox可以解决屏幕闪的问题但保存的文件是空的,
    paintbox不能实现文件保存,请问怎么办?
      

  3.   

    var
      bmp: TBitmap;
    begin
      bmp := TBitmap.Create;
      try
        bmp.Width := PaintBox.Width;
        bmp.Height := PaintBox.Height;
        BitBlt(bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height,
          PaintBox.Canvas.Handle, 0, 0, SRCCOPY);
        bmp.SaveToFile('C:\myFile.BMP');
      finally
        bmp.Free;
      end;
    end;
    “无声”高手写的。
      

  4.   

    兩者都是從TGraphicControl繼承過來, 它們沒有本質的區別, 它們的區別是TImage比TPaintBox多了一些東西而已 如Picture,一般都是用TPaintBox.因為Timage中大部份的東西是對你沒什么用的! 當然你也可能用Timage,在做圖形時解決閃的問題有如下方法:
    1 :將Image的parent 如Form (TwinControl)的DoubleBuffer設為True ;
    2 :你做的圖形采用雙Buffer, 在buffer里畫完后用Invalidate通知Timage重畫, 在Onpaint里只需將你Buffer里的內容Copy到Image.Canvas就ok見義你用TPaintBox , 想保存 用如下方法:
    procedure SavetoFile(PaintBox:TPaintBox;FileName:TFileName);
    var
      aBitmap : TBitmap ;
    begin
      Assert(PaintBox<>nil);
      Assert(FileName<>'');
      aBitmap := TBitmap.Create ;
      try
        abitmap.Width := PaintBox.Width ;
        abitmap.Height := PaintBox.Height ;
        abitmap.Canvas.CopyRect(Rect(0,0,PaintBox.Width,PaintBox.Height),
                                PaintBox.Canvas,
                                Rect(0,0,PaintBox.Width,PaintBox.Height));
        abitmap.SaveToFile(FileName);
      finally
        aBitmap.Free ;
      end;
    end;就ok了
    “港”OR“澳”OR“台”朋友写的^_*
      

  5.   

    procedure SavetoFile(PaintBox:TPaintBox;FileName:TFileName);
    var
      aBitmap : TBitmap ;
    begin
      Assert(PaintBox<>nil);
      Assert(FileName<>'');
      aBitmap := TBitmap.Create ;
      try
        abitmap.Width := PaintBox.Width ;
        abitmap.Height := PaintBox.Height ;
        abitmap.Canvas.CopyRect(Rect(0,0,PaintBox.Width,PaintBox.Height),
                                PaintBox.Canvas,
                                Rect(0,0,PaintBox.Width,PaintBox.Height));
        abitmap.SaveToFile(FileName);
      finally
        aBitmap.Free ;
      end;
    end;