增加TBitmap的大小或深度



当我将位图的大小增加(例如)…

bitmap.Width := bitmap.Width + 30;

…我是否可以控制右边的30个像素填充的内容,或者我是否可以假设它们未初始化

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

令人尴尬的新手问题,但我的谷歌搜索失败了。:)

由于文档中没有定义在这个实例中发生了什么,因此您不能依赖任何东西。最有可能的新像素将是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通道也是如此—我将把它留给用户练习来创建一个类似的函数:-).

相关内容

  • 没有找到相关文章

最新更新