求助!关于绘图程序刷新!!三个问题各100分献上!!!
我用 Delphi 5 编了一个绘图程序,用如下方法完成鼠标作图:
procedure TForm1.ImageMouseDown(Sender:TObject,...);//保存以前图象
begin
SaveImage.Canvas.Draw(0,0,Image.Picture.Bitmap);
OriginX=X;
OriginY=Y;
//...
end;
procedure TForm1.ImageMouseMove(Sender:TObject,...);//在Image上作随鼠标位而定的直线
begin
Image.Canvas.Draw(0,0,SaveImage.Picture.Bitmap);
Image.Canvas.MoveTo(OriginX,OriginY);
Image.Canvas.LineTo(X,Y);
end;
procedure TForm1.ImageMouseUp(Sender:TObject,...);//在Image上完成绘图
begin
Image.Canvas.Draw(0,0,SaveImage.Picture.Bitmap);
Image.Canvas.MoveTo(OriginX,OriginY);
Image.Canvas.LineTo(X,Y);
end;
这样每次移动鼠标都会导致一次 Canvas.Draw 和一次重画,结果发现屏幕闪烁另人无法容忍,问各位有何高招?
我看见许多书上都说用 XOR 解决,但那样会损坏背景,不知实践中是如何应用的?
另外还有就是用什么办法可以方便的保存以前画的部分,以供选中和编辑?
另外,将一块形状不规则的区域送入剪贴板是如何实现的(Lasso工具)?