線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2271
推到 Plurk!
推到 Facebook!

如何防止在TPAINTBOX上畫圖被擦除

尚未結案
JoneyLi
一般會員


發表:10
回覆:9
積分:3
註冊:2003-06-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-20 16:52:07 IP:211.101.xxx.xxx 未訂閱
當窗口被遮蓋或者窗口最小化時,所畫的圖將被擦除,不知為什么。希望各位朋友指教。謝謝! 代碼如下: 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-20 17:20:37 IP:147.8.xxx.xxx 未訂閱
If you want to use a TPaintBox, you need to draw in the OnPaintEvent. Maybe you should use a TImage instead, TImage will repaint itself since your painting is stored internally in a bitmap.
JoneyLi
一般會員


發表:10
回覆:9
積分:3
註冊:2003-06-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-21 08:48:05 IP:211.101.xxx.xxx 未訂閱
謝謝william 的解答,TIMAGE可以重畫,但是當圖像過大時會髮生圖像延遲現象,不知怎樣解決。 還有您說的draw in the OnPaintEvent 我的PBPaint就是TPaintbox的OnPaintEvent,但不知為何就是不行,可能我寫的不對,能詳細講一下嗎?
JoneyLi
一般會員


發表:10
回覆:9
積分:3
註冊:2003-06-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-21 12:33:26 IP:211.101.xxx.xxx 未訂閱
謝謝william 的解答,我用過TIMAGE,所畫圖像不會被擦除,但是當分辨率變大時繪圖不是很流暢,TPAINTBOX則很流暢,不知為什么,請指教。
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-21 14:04:03 IP:210.3.xxx.xxx 未訂閱
引言: 謝謝william 的解答,我用過TIMAGE,所畫圖像不會被擦除,但是當分辨率變大時繪圖不是很流暢,TPAINTBOX則很流暢,不知為什么,請指教。
我以為因為你的畫圖方式令到 TImage 要經常重繪吧,我想或者改為用 TPaintBox 配合 TBitmap 會比較好。在 MouseMove 時同時在 PaintBox 及 Bitmap 的 Canvas 上畫圖,在 PaintBox 的 OnPaint 時再把 Bitmap 給 Copy 過去。當然 Bitmap 在高分辨率時比較吃資源,不用 Bitmap ,可用自訂的 record 去記錄要畫的位置,或用 metafile 等。
系統時間:2024-05-18 12:56:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!