Delphi 2009で発生した問題をTImage.Canvas、次の再現可能なケースに絞り込みました。
与えられた: フォーム、TImage、TLabelおよびそのTButton上。はTImage4 つのエッジすべてに固定されているため、フォームのサイズを変更すると のサイズも変更されTImageます。私ができるようにしたいのはImage1、サイズ変更後に利用できる最大の領域を描画することです。したがって、私のテストケースでは、ボタンのOnClickハンドラー
に次のコードがあります。
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= IntToStr (Image1.Width)+' x '+IntToStr(Image1.Height);
Image1.Canvas.Pen.Color:= 0;
Image1.Canvas.Rectangle(0,0,Image1.Width, Image1.Height);
end;
Image1.Widthフォームのサイズを.Height変更すると、期待どおりに変更される
ことがわかりますが、サイズ変更されたフォームが元のフォームよりも大きい場合に描画される四角形は不完全になり、以前と同じ領域にのみ描画されます。
サイズ変更された領域全体を使用するにはどうすればよいですか?
価値があるのは、私が遊んだ元の問題でImage1.Stretch、サイズ変更時により多くの領域を使用できますが、図面が歪んでしまいます(望ましくありません)。も使用する場合はImage1.Proportional、より良いですが、使用可能な領域をすべて使用することはできません。Image1.AutoSize私にとっても何の役にも立たないようです。
どんな助けでも感謝します。