0

When I increase the size of a bitmap by (for example) ...

bitmap.Width := bitmap.Width + 30;

... do I have any control of what the right-hand 30 pixels get filled with, or do I just assume they're uninitialized

Similarly if I change PixelFormat from pf24bit to pf32bit, can I control what the alpha bytes are initialized with?

Embarrasingly newbie question, but my google-fu has failed me. :)

Roddy
  • 66,617
  • 42
  • 165
  • 277

1 Answers1

1

Since it isn't defined in the documentation what happens in this instance, you cannot rely on anything. Most likely the new pixels will be 0 (black), but if it is important to you what they are, you should explicitly fill them:

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;

Likewise with the Alpha channel - I'll leave it as an exercise to the user to make a similar function :-).

HeartWare
  • 7,464
  • 2
  • 26
  • 30