unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    btn_1: TButton;
    procedure btn_1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure DrawBufImage(bufCanvas:TCanvas );
  end;var
  Form1: TForm1;
  oldbmp,Bufbmp:TBitmap ;
implementation{$R *.dfm}procedure TForm1.DrawBufImage(bufCanvas: TCanvas);
begin
  bufCanvas.Pen.Color :=clBlack ;
  bufCanvas.MoveTo(0,0);
  bufCanvas.LineTo(100,100);
end;procedure TForm1.btn_1Click(Sender: TObject);
begin
  Bufbmp:=TBitmap.Create ;
  DrawBufImage(Bufbmp.Canvas );
  bitblt(self.Canvas.Handle, 0, 0, 400, 400,
  BufBmp.Canvas.Handle, 0, 0, SRCCOPY);
  Bufbmp.Free ;
end;end.没反应,是哪里错了呢

解决方案 »

  1.   


    procedure TForm1.btn_1Click(Sender: TObject);
    var
      img: TImage;
    begin
      img := TImage.Create(Self);
      try
        img.Parent := Self;
        img.Top := 200;
        img.Left := 200;
        img.width := 200;
        img.height := 200;
        img.Canvas.Pen.Color :=clBlack ;
        img.Canvas.MoveTo(0,0);
        img.Canvas.LineTo(100,100);
        Application.ProcessMessages;    bitblt(self.Canvas.Handle, 0, 0, 200, 200,
        img.Canvas.Handle, 0, 0, SRCCOPY);
      finally
        img.Free;
      end;
    end;
      

  2.   


    谢谢楼上的,但是画出来的时候,Image里面是白色的,我不想要这个白色,该怎么弄呢?
      

  3.   


    SRCCOPY改成SRCAND
    bitblt(self.Canvas.Handle, 0, 0, 200, 200,
        img.Canvas.Handle, 0, 0, SRCCOPY);
    ----------------------------------------------------
    bitblt(self.Canvas.Handle, 0, 0, 200, 200,
        img.Canvas.Handle, 0, 0, SRCAND);