如何防止在TPAINTBOX上畫圖被擦除 |
尚未結案
|
JoneyLi
一般會員 發表:10 回覆:9 積分:3 註冊:2003-06-06 發送簡訊給我 |
當窗口被遮蓋或者窗口最小化時,所畫的圖將被擦除,不知為什么。希望各位朋友指教。謝謝! 代碼如下:
type
TFrmMain = class(TForm)
Pb:TpaintBox;
MovePt:TPoint;
Drawing:boolean; procedure TFrmMain.PBMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
MovePt := point(X,Y);
PBPaint(self);
end;
procedure TFrmMain.PBMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Drawing then
begin
Drawing := False;
end;
end;
procedure TFrmMain.PBPaint(Sender: TObject);
begin
if Drawing = false then
begin
pb.Canvas.MoveTo(MovePt.X,MovePt.Y );
end
else if Drawing = true then
begin
pb.Canvas.LineTo(MovePt.X,MovePt.Y);
end; end;
procedure TFrmMain.PbMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Drawing := True;
end;
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
JoneyLi
一般會員 發表:10 回覆:9 積分:3 註冊:2003-06-06 發送簡訊給我 |
|
JoneyLi
一般會員 發表:10 回覆:9 積分:3 註冊:2003-06-06 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
引言: 謝謝william 的解答,我用過TIMAGE,所畫圖像不會被擦除,但是當分辨率變大時繪圖不是很流暢,TPAINTBOX則很流暢,不知為什么,請指教。我以為因為你的畫圖方式令到 TImage 要經常重繪吧,我想或者改為用 TPaintBox 配合 TBitmap 會比較好。在 MouseMove 時同時在 PaintBox 及 Bitmap 的 Canvas 上畫圖,在 PaintBox 的 OnPaint 時再把 Bitmap 給 Copy 過去。當然 Bitmap 在高分辨率時比較吃資源,不用 Bitmap ,可用自訂的 record 去記錄要畫的位置,或用 metafile 等。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |