S
sephy
Unregistered / Unconfirmed
GUEST, unregistred user!
这样一段东西,麻烦大家看一下
ptb是一个TPaintBox
var
Form1: TForm1;
ABit: TBitmap;
AR: TRect;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
begin
ABit:=TBitmap.Create;
AR:=Rect(0,0,ptb.Width,ptb.Height);
Form1.Refresh;
ptb.Canvas.Brush.Color:=clWhite;
ptb.Canvas.FillRect(AR);
end;
//画上线
procedure TForm1.Button1Click(Sender: TObject);
begin
ptb.Canvas.PenPos:=Point(0,0);
ptb.Canvas.LineTo(90,90);
end;
//暂存到Bitmap,擦掉线
procedure TForm1.Button2Click(Sender: TObject);
begin
ABit.Canvas.CopyRect(AR,ptb.Canvas,AR);
ptb.Canvas.FillRect(AR);
end;
//用Bitmap内的暂存,恢复原来图案
procedure TForm1.Button3Click(Sender: TObject);
begin
ptb.Canvas.CopyRect(AR,ABit.Canvas,AR);
end;
为什么达不到我上面的所想的效果呢?
没有办法恢复原来的图案
请不要用背景色或者反色,画过原来线的方法来擦线
因为这同样会擦掉,本来背景上已经画好的东西
我暂存一下的目的就是不想改掉原来背景上有的东西
ptb是一个TPaintBox
var
Form1: TForm1;
ABit: TBitmap;
AR: TRect;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);
begin
ABit:=TBitmap.Create;
AR:=Rect(0,0,ptb.Width,ptb.Height);
Form1.Refresh;
ptb.Canvas.Brush.Color:=clWhite;
ptb.Canvas.FillRect(AR);
end;
//画上线
procedure TForm1.Button1Click(Sender: TObject);
begin
ptb.Canvas.PenPos:=Point(0,0);
ptb.Canvas.LineTo(90,90);
end;
//暂存到Bitmap,擦掉线
procedure TForm1.Button2Click(Sender: TObject);
begin
ABit.Canvas.CopyRect(AR,ptb.Canvas,AR);
ptb.Canvas.FillRect(AR);
end;
//用Bitmap内的暂存,恢复原来图案
procedure TForm1.Button3Click(Sender: TObject);
begin
ptb.Canvas.CopyRect(AR,ABit.Canvas,AR);
end;
为什么达不到我上面的所想的效果呢?
没有办法恢复原来的图案
请不要用背景色或者反色,画过原来线的方法来擦线
因为这同样会擦掉,本来背景上已经画好的东西
我暂存一下的目的就是不想改掉原来背景上有的东西