我的程序正在执行一项耗时的任务,我想在应用程序窗口的中间显示一个 TImage,但它不会保持在顶部 - 我的 VST 总是在顶部。但是,当我使用 TPanel 时,它会保持在顶部吗?我怎样才能让我的 TImage 做到这一点?
事实上,适用于所有控件的解决方案将非常棒:)
谢谢!
您需要一个窗口控件(即具有窗口句柄的控件或“适当的”控件)来显示您的消息,因为非窗口控件在窗口控件上方是不可见的。最简单的解决方案是将TImage
a放入TPanel
并设置Image1.Align := alClient
and Panel1.BorderStyle := bsNone
。
如果你想在你的普通控件上绘制一个半透明的位图,你可以像我一样做:
procedure TForm1.Button1Click(Sender: TObject);
var
bm: TBitmap;
png: TPngImage;
begin
// The form contains a hidden TPanel (somewhere on the form)
// with a TImage (alClient).
// png is a PNG image with an alpha channel
png := TPngImage.Create;
try
png.LoadFromFile('C:\Users\Andreas Rejbrand\Pictures\alpha.png');
// Create bitmap of form and blend PNG on it
bm := GetFormImage;
try
bm.Canvas.Draw(0, 0, png);
Image1.Picture.Bitmap := bm;
finally
bm.Free;
end;
Panel1.Align := alClient;
Panel1.BringToFront;
Panel1.Show;
finally
png.Free;
end;
end;
TImage 没有与之关联的窗口,这就是它与面板之间的区别。
添加一个面板,把图片放到面板里面,即图片的父级就是面板。然后,您可以通过将面板放在前面来将图像放在前面。
您是否考虑过隐藏您的 VST?