delphi - 控件放在最上面,像TPanel 可以吗?

标签 delphi vcl timage tpanel stayontop

我的程序正在执行一项耗时的任务,我想在应用程序窗口的中间显示一个 TImage,但它不会停留在顶部 - 我的 VST 总是在顶部。但是,当我使用 TPanel 时,它会保持在顶部吗?我怎样才能使我的 TImage 做到这一点?

事实上,适用于所有控件的解决方案将是出色的:)

谢谢!

最佳答案

您需要一个窗口化控件(即带有窗口句柄的控件,或“适当的”控件)来显示您的消息,因为非窗口化控件在窗口化控件之上是不可见的控制。最简单的解决方案是将 TImage 放在 TPanel 中并设置 Image1.Align := alClientPanel1.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;

Sample result

关于delphi - 控件放在最上面,像TPanel 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5369681/

相关文章:

delphi - 如何继承TObjectList<T>而不是继承TObjectList

performance - 如何更快地解码 JPEG 文件?

c++ - 在 C++ Builder XE2 中重命名 VCL Form 类

delphi - Delphi XE 3 形式的动画 gif

delphi 7 TImage 和 TImageList

delphi - 使用 fontdialog 和 RichEdit 更改事件控件

德尔福2010 : Group TListView items in vsReport ViewStyle

c++ - C++ Builder中的OnClick事件签名问题

c++ - 如何在 C++ Builder 中使用 libcurl

Delphi - 自XE8以来如何正确注册图形类?