增加TBitmap的大小或深度

时间:2015-09-22 20:16:08

标签: delphi gdi tbitmap

当我通过(例如)...

增加位图的大小时
bitmap.Width := bitmap.Width + 30;

...我是否可以控制右手30像素被填充的内容,或者我只是假设它们未被初始化

同样,如果我将PixelFormatpf24bit更改为pf32bit,我可以控制初始化alpha字节的内容吗?

令人尴尬的新手问题,但我的google-fu让我失望了。 :)

1 个答案:

答案 0 :(得分: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;

与Alpha频道类似 - 我会将其作为练习留给用户以制作类似的功能: - )。