1

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;

私見最後のコードは、完全な画像の上に完全な画像の緑色の長方形を描画し、事実上常に緑色にする必要があります。代わりに、灰色の画像(Delphiの標準のbg-colorと同じように)が表示され、サイズ変更中に1秒間、緑色の画像が点滅します。

何が欠けていますか、サイズ変更後に更新する必要がある隠れたコンポーネントはありますか?

前もって感謝します、

猛吹雪

4

1 に答える 1

8

まず第一に、する代わりに

DisplayImage.Width := FMain.ClientWidth;
DisplayImage.Height := FMain.ClientHeight;

サイズを変更するたびAlign := alClientに、ペイントボックスを設定するだけです。

次に、ペイントボックスに描画するには、ペイントボックスのOnPaintイベントを使用します。

procedure TFMain.DisplayImagePaint(Sender: TObject);
begin
   DisplayImage.Canvas.Brush.Color := clGreen;
   DisplayImage.Canvas.Brush.Style := bsSolid;
   DisplayImage.Canvas.Rectangle(0, 0, DisplayImage.Width, DisplayImage.Height)
end;
于 2010-07-13T21:15:10.573 に答える