增加 TBitmap 的大小或深度
Increasing the size or depth of a TBitmap
当我将位图的大小增加(例如)...
bitmap.Width := bitmap.Width + 30;
...我是否可以控制右侧 30 像素填充的内容,或者我只是假设它们未初始化
同样,如果我将 PixelFormat
从 pf24bit
更改为 pf32bit
,我可以控制初始化 alpha 字节的内容吗?
令人尴尬的新手问题,但我的 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;
与 Alpha 通道一样 - 我将把它作为练习留给用户来制作类似的功能:-)。
当我将位图的大小增加(例如)...
bitmap.Width := bitmap.Width + 30;
...我是否可以控制右侧 30 像素填充的内容,或者我只是假设它们未初始化
同样,如果我将 PixelFormat
从 pf24bit
更改为 pf32bit
,我可以控制初始化 alpha 字节的内容吗?
令人尴尬的新手问题,但我的 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;
与 Alpha 通道一样 - 我将把它作为练习留给用户来制作类似的功能:-)。