TBitmapに割り当てた画像をTImageのStretchプロパティがtrueのときのように
サイズ一杯に引き伸ばして描画する方法はないでしょうか?
TBitmapのwidth、heightを実際の画像より大きく指定しても画像は引き伸ばされず
余白が白く塗りつぶされて表示されるようです。
TImageのPicture.Bitmapに画像を割り当てればStretchできますが、今回は
TBitmapのみをインスタンスとして使いたいものでお尋ねしました。
もう一つ TBitmap のインスタンスをつくって、その Canvas.StretchDraw()
でコピーします。
レスさんと同じですが例を示します。
public
bmp:TBitmap;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
bmp := TBitmap.Create;
bmp.LoadFromFile('C:\Test.bmp')
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
bmp.Free;
end;
procedure StretchBMP(bmp:TBitmap;Ratio:Single);
var
tempBMP:TBitmap;
begin
tempBMP := TBitmap.Create;
try
tempBMP.Assign(bmp);
bmp.Width := Round(tempBMP.Width*Ratio);
bmp.Height := Round(tempBMP.Height*Ratio);
bmp.Canvas.StretchDraw(Rect(0,0,bmp.Width,bmp.Height),tempBMP);
finally
tempBMP.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
StretchBMP(bmp,1.5);
Canvas.Draw(10,10,bmp);
end;
迅速なご回答ありがとうございました。
TBitmapにCanvasがあるのは気づいていましたが、StretchDrawというメソッド
の存在を知らず、また知っていたとしても矩形領域を別のbmpで再描画する
という発想がありませんでした。
どうもありがとうございました。
ツイート | ![]() |