(たとえば)ビットマップのサイズを大きくすると...
bitmap.Width := bitmap.Width + 30;
...右側の 30 ピクセルが何で満たされるかを制御できますか、それとも初期化されていないと仮定しますか?
同様に、PixelFormat
からに変更しpf24bit
た場合pf32bit
、アルファ バイトの初期化に使用するものを制御できますか?
恥ずかしいことに初心者の質問ですが、私のgoogle-fuは失敗しました。:)
この場合に何が起こるかはドキュメントに定義されていないため、何も信頼できません。ほとんどの場合、新しいピクセルは 0 (黒) になりますが、それらが何であるかが重要な場合は、明示的に塗りつぶす必要があります。
FUNCTION ExpandBitMap(BMP : TBitMap ; AddW,AddH : Cardinal ; FillColor : TColor = clBlack) : TBitMap;
VAR
OrgW,OrgH : Cardinal;
BEGIN
OrgW:=BMP.Width; OrgH:=BMP.Height;
BMP.Width:=OrgW+AddW; BMP.Height:=OrgH+AddH;
BMP.Canvas.Brush.Color:=FillColor;
BMP.Canvas.Brush.Style:=bsSolid;
BMP.Canvas.FillRect(Rect(OrgW,0,BMP.Width,BMP.Height));
BMP.Canvas.FillRect(Rect(0,OrgH,OrgW,BMP.Height));
Result:=BMP
END;
アルファ チャンネルも同様です。同様の機能を作成するための演習として、ユーザーに任せます :-)。