【发布时间】:2019-07-30 18:42:01
【问题描述】:
我遇到了一些障碍,是我自己还是不能将资源中的图像分配给 TSpeedButton 的字形,而没有如下所示的可怕黑色轮廓?
我已经为 TImage 组件分配了完全相同的方式,并且我得到了所需的结果。
我已经搜索了很长时间,但似乎没有人遇到这个奇怪而烦人的问题。
这是我下面表格的源代码:
procedure TForm3.Button1Click(Sender: TObject);
var r : tresourcestream; png : tpngimage;
begin
r := tresourcestream.CreateFromID(hinstance,34,'cardimage');
png := tpngimage.Create;
png.LoadFromStream(r);
png.AssignTo(image1.Picture.bitmap);
png.AssignTo(speedbutton1.glyph);
png.Free;
r.Free;
end;
34 是“cardimage”类型的图像,如果您还没有猜到,它与图片中显示的图像相关。
【问题讨论】:
-
问题显然是左图中的alpha通道被忽略了。
-
一般情况下,您应该调用
X.Assign(Y),而不是Y.AssignTo(X)。如果TX不知道如何从TY获取属性,它将通过自动调用Y.AssignTo(X)来遵循TY。但如果TY不知道如何将自己分配给TX,它就不会服从目标对象。