0

(たとえば)ビットマップのサイズを大きくすると...

bitmap.Width := bitmap.Width + 30;

...右側の 30 ピクセルが何で満たされるかを制御できますか、それとも初期化されていないと仮定しますか?

同様に、PixelFormatからに変更しpf24bitた場合pf32bit、アルファ バイトの初期化に使用するものを制御できますか?

恥ずかしいことに初心者の質問ですが、私のgoogle-fuは失敗しました。:)

4

1 に答える 1

1

この場合に何が起こるかはドキュメントに定義されていないため、何も信頼できません。ほとんどの場合、新しいピクセルは 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;

アルファ チャンネルも同様です。同様の機能を作成するための演習として、ユーザーに任せます :-)。

于 2015-09-23T07:45:35.090 に答える