当我将位图的大小增加(例如).
bitmap.Width := bitmap.Width + 30;..。我是否可以控制右30个像素的填充,还是假设它们未初始化?
类似地,如果我将PixelFormat从pf24bit更改为pf32bit,是否可以控制使用什么字母字节进行初始化?
令人尴尬的新手问题,但是我的google-fu让我失望了。:)
发布于 2015-09-23 07:45:35
因为在文档中没有定义在这个实例中发生的事情,所以您不能依赖任何东西。新像素很可能是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通道,我将把它作为一个练习,让用户进行类似的功能:-)。
https://stackoverflow.com/questions/32726060
复制相似问题