0
我有問題,調整大小TPaintBox並在其上繪製:德爾福 - TPaintBox - 調整
在我的表格(命名FMain)我放棄了TPaintBox(名爲DisplayImage),其中我試圖調整爲表被調整大小。
要做到這一點,我寫了FMain的onResize受到()方法(我證實,它被稱爲正確),其中我嘗試調整DisplayImage:
procedure TFMain.FormResize(Sender: TObject);
begin
DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;
DisplayImage.Canvas.Brush.Color := clGreen;
DisplayImage.Canvas.Brush.Style := bsSolid;
DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height);
end;
恕我直言,過去的代碼應該畫一個全在整個圖像上呈現綠色矩形,使其始終呈綠色。相反,我得到一個灰色的圖像(就像德爾福的標準bg顏色),每隔一段時間,在調整大小的瞬間,綠色圖像閃爍起來。
我錯過了什麼,是否有一些隱藏的組件我需要更改大小後更新?
謝謝你在前進,
暴雪
謝謝,工作就像一個魅力:) 但無論如何,應該可以借鑑的畫布,或者OnPaint事件是否會覆蓋我的繪圖? – 2010-07-13 21:21:11
您*正在繪製到畫布上。你不需要*做'OnPaint'(即使這是個好主意) - 你可以在Button1Click或類似的東西上做。然而,調整形式是一個相當微妙的時間做繪畫。可能有一個'WM_ERASEBKGND'或類似的東西來解除你的繪畫。 – 2010-07-13 21:27:59
@ThE - (除了Andreas的評論)這樣想:OnPaint在PaintBox需要繪畫時被調用,但如果你不在OnPaint中繪製,你的繪圖將被f.i.當你在窗體前放置另一個窗口時。文檔中有一個顯示不同之處的示例:http://docwiki.embarcadero.com/CodeSamples/en/OnPaint_%28Delphi%29 – 2010-07-14 00:37:56