Delphi:将 TImage 置于前面

2024-01-18

看下图:

如您所见,我无法将按钮发送到后面。这仅适用于标签。

那么我该如何发送TImage到前面以其透明度.

顺便说一句我读过这个相关问题 https://stackoverflow.com/questions/5369681/controls-on-top-like-tpanel-can-do/5369707#5369707但没有帮助我。因为运行 Andreas Rejbrand 的代码后您甚至无法单击按钮。不仅是按钮,还有所有东西(比如图中的滚动条)

Edit:我不想在将其发送回图像后使该按钮可访问。只想带TImage到一切的前面。

Thanks.


接近目标的一种方法是使用 TWincontrol 的插入器类,并在绘制完它们之后,使用 TControlCanvas 和“挂钩”WM_PAINT 绘制在其上移动的图像。
该代码使用半透明 PNG 图像显示原始草稿,并且可能会得到增强。

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, dxGDIPlusClasses, ExtCtrls;

type
  TButton=Class (StdCtrls.TButton)
      Procedure WMPaint(var MSG:TMessage);Message WM_Paint;
  End;
  TEdit=Class (StdCtrls.TEdit)
      Procedure WMPaint(var MSG:TMessage);Message WM_Paint;
  End;

  TForm2 = class(TForm)
    Image1: TImage;
    SpeedButton1: TSpeedButton;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TButton }

procedure TButton.WMPaint(var MSG: TMessage);
var
  cc:TControlCanvas;
begin
   inherited;
    CC:=TControlCanvas.Create;
    CC.Control := TControl(Self);
    CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic);
    CC.Free;
end;

procedure TEdit.WMPaint(var MSG: TMessage);
var
  cc:TControlCanvas;
begin
   inherited;
    CC:=TControlCanvas.Create;
    CC.Control := TControl(Self);
    CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic);
    CC.Free;

end;

end.

另一个(更好的)“挂钩”位置将是压倒一切的画图窗口

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, dxGDIPlusClasses, ExtCtrls;

type
  TButton=Class (StdCtrls.TButton)
      procedure PaintWindow(DC: HDC);override;
  End;
  TEdit=Class (StdCtrls.TEdit)
      procedure PaintWindow(DC: HDC);override;
  End;

  TForm2 = class(TForm)
    Image1: TImage;
    SpeedButton1: TSpeedButton;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TButton }

procedure TButton.PaintWindow(DC: HDC);
var
  cc:TCanvas;
begin
   inherited;
    CC:=TCanvas.Create;
    CC.Handle := DC;
    CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic);
    CC.Free;
end;

procedure TEdit.PaintWindow(DC: HDC);
var
  cc:TCanvas;
begin
   inherited;
    CC:=TCanvas.Create;
    CC.Handle := DC;
    CC.Draw(-Left,-Top,Form2.Image1.Picture.Graphic);
    CC.Free;

end;

end.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi:将 TImage 置于前面 的相关文章

  • 在 SQLite 数据库中存储日期时间值的最佳方式(Delphi)

    我将把日期时间值存储在 SQLite 数据库中 使用 Delphi 和 DISqlite 库 数据库的本质是它永远不需要在计算机或系统之间传输 因此互操作性不是一个限制 相反 我的重点是阅读速度 日期时间字段将被索引 我将对其进行大量搜索
  • 如何将 JSON 字符串转换为图像?

    我有一个将图像转换为 JSON 数组的应用程序 并将其保存到 blob 字段中 function getImage String var memorystream TMemoryStream jsonArray TJSONArray beg
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • 检测反射 DLL 注入

    在过去的几年中 恶意软件 以及一些渗透测试工具 如 Metasploit 的 meterpreter 负载 已经开始使用反射 DLL 注入 PDF http www harmonysecurity com files HS P005 Ref
  • 有没有办法在没有 QApplication::exec() 的情况下使用 Qt?

    有没有一种安全的方法可以在不调用 QApplication exec 的情况下使用 Qt 我有许多不同的对象正在对多个资源执行长期进程 至少其中一个正在与 Web 应用程序服务器进行通信 我正在制作一个 GUI 应用程序 提示用户在正确的时
  • Delphi XE5 REST/Android 客户端“会话已过期”

    我有一个REST Server与Android Client 都在Deplhi Xe5 Android客户端成功连接Rest服务器 在我的服务器中我有一个TDSHttpWebDispatcher with SessionTimeout 12
  • 以 png 格式剪辑幻灯片 (Delphi 2010)

    I have a filmstrip of images in png format like this 我想知道如何剪辑每个图像并将这些图像放入 TImageList 控件中 并始终保留透明度 EDIT 是的 在设计时 RRUZ 提到的技
  • Winforms 风格/UI 外观和感觉提示

    从多年的 asp net 开发回到 winforms 应用程序 寻找有关如何 设计 winforms 的建议和技巧 类似于我在 asp net 中使用 CSS 母版页的方式 我对如何在一处更新某些类型的控件的字体 颜色感兴趣 如何保持布局的
  • 为什么抽屉布局中的视图强制缩放以填充屏幕

    这是我的测试代码
  • Swing GUI 出现 IntelliJ 错误“contentPane 无法设置为 null。”从终端编译时

    当我从 IntelliJ 编译我的项目时 没有任何问题 我的程序运行顺利 但是当我尝试使用 javac 从终端编译它时 警告 注意 Victor presentation TableControllerMenu java 使用未经检查或不安
  • getappdata 在 MATLAB 中返回空矩阵

    我有一段代码 我在其中使用setappdata然后我使用以下方式调用数据getappdata即使它不为空 它也会返回一个空矩阵 我的一段简化代码如下 function edit1 Callback hObject eventdata han
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网
  • 在Delphi 7中,为什么我可以给const赋值?

    我将一些 Delphi 代码从一个项目复制到另一个项目 发现它在新项目中无法编译 但在旧项目中可以编译 代码看起来像这样 procedure TForm1 CalculateGP const Price money 0 begin Pric
  • 鼠标监听器帮助 Java

    我正在尝试用 Java Swing 编写一个程序 输出一个 10 x 10 的几何矩形网格 其中填充了随机颜色 但是 当用户单击显示窗口中的一个矩形时 该矩形应重新绘制 并更改为另一种颜色 到目前为止 我已经运行了基本程序 但我不知道如何对
  • 打印 TDBGrid [重复]

    这个问题在这里已经有答案了 如何在不安装或下载组件的情况下打印 DBGrid OR 如何将 DBGrid 的数据放入 RichEdit 以便我可以从那里打印它 数据感知控件从 DataSource 属性获取数据 并使用它 不过 您必须手动遍
  • 防止多个实例 - 但还要处理命令行参数?

    我正在从我的应用程序处理与 Windows 相关的扩展文件 因此 当您在 Windows 中双击文件时 它将执行我的程序 然后我从那里处理该文件 如下所示 procedure TMainForm FormCreate Sender TObj
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E
  • Java 和 GUI - 根据 MVC 模式,ActionListener 属于哪里?

    我目前正在编写一个模板 Java 应用程序 不知何故 如果我想完全遵循 MVC 模式 我不确定 ActionListener 属于哪里 该示例基于 Swing 但它不是关于框架 而是关于 Java 中 MVC 的基本概念 使用任何框架创建
  • 为什么 Delphi 中的 ADO Next 记录处理速度变慢?

    我有一个多年前开发的 Delphi 4 程序 它使用Opus 直接访问 http sourceforge net projects directaccess 按顺序搜索 Microsoft Access 数据库并检索所需的记录 Delphi

随机推荐

  • Delphi:“TObject 数组”类型参数上的 SetLength()

    我正在尝试调整作为参数传递的某个类的数组的大小 例如 procedure Resize MyArray Array of TObject begin SetLength MyArray 100 end 但是 这会引发错误 E2008 不兼容
  • 如何阻止异步 tcp .NET 代码耗尽整个系统的资源

    在我的一些异步 TCP 服务器代码中 偶尔会发生错误 导致进程消耗整个系统的内存 在查看日志 事件查看器和一些MS docs http support microsoft com kb 947862如果 调用应用程序多次对同一客户端进行异步
  • 设置 TCP/IP 客户端和服务器通过网络进行通信

    我正在尝试学习一些有关套接字编程的知识 并且偶然发现了 TcpListener 和 TcpClient 来使用 因为我读到它们对于初学者来说稍微容易一些 我想要完成的基本要点是拥有一个可以在我的笔记本电脑和同一网络上的另一台笔记本电脑上运行
  • 对 pandas 数据框进行子集化的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 嘿 我是 Pandas 新手 我刚刚遇到df query 为什么人们会使用df query 什么时候可以使用括号表示法直接过滤数据框 panda
  • 如何在 JavaScript 中添加 HTML 标签?

    我想在我的 javascript 中使用一个 html 标签 但不知道如何使用它 For ex p An absolute URL a href https www w3schools com W3Schools a p 这是我的标签 我想
  • 如何使用 C++ 发出 HTTP 请求?

    有没有办法用C 轻松发出HTTP请求 具体来说 我想下载一个页面 API 的内容并检查内容是否包含1或0 是否也可以将内容下载到字符串中 我有同样的问题 libcurl http curl haxx se libcurl 真的很完整 有一个
  • DetectionAPI 仅支持单声道 Wav

    我正在开发一个拍手检测 Android 应用程序 我在用musicg https github com madyx musicgapi 用于此 我从github导入了该项目并在android设备上运行 然后这个错误显示 DetectionA
  • Memcache 错误:无法从流 (0) 数组读取行

    当我们的服务器承受任何重大负载时 我会收到以下错误的一些变化 我已经在谷歌上搜索了几个小时并尝试了一切 包括升级到最新版本和全新安装 我已经阅读了 SA 上所有关于它的帖子 但无法弄清楚 很多人都有同样的问题 但似乎没有人有明确的答案 任何
  • Ga特林 j.n.ConnectException:地址已在使用中

    当使用 Ga特林运行模拟时 我遇到以下异常 j n ConnectException 地址已在使用中 没有更多信息 当测试的服务器无法响应或超时时是否会发生这种情况 我想确保这是服务器抛出的异常 而不是客户端抛出的异常 我在 Windows
  • AWS 负载均衡器连接到同一服务器上的多个端口,无需 PAT

    我有一个 EC2 Web 服务器 它提供一个侦听端口 80 8080 443 和 8443 的应用程序 外部客户端需要在这些端口上与其通信 无端口转换 我试图将其放在负载平衡器后面 但过多的所需端口让我感到困惑 我有一个 ALB 监听 4
  • 当 NFS 挂载失败时,bash 检查目录是否存在挂起

    我有一个 bash profile 脚本 它根据目录存在为我设置一些别名 if d home user games then alias cdgames cd home user games fi 这些目录之一位于 NFS 挂载上 如果文件
  • 如何在 JSON Schema 中制作二维数组?

    下面的二维数组怎么写JSON 架构 http json schema org 网格固定为16 13 它包含完全空的行或具有 int 0 99 或空字符串等值的行 这是数组的示例 94 78 37 78 61 71 42 82 53 62 6
  • PyObjC + Xcode 3.2 + 非 Apple Python

    我想开始尝试使用 PyObjC 开发一些简单的应用程序 我安装了 PyObjC 和 Xcode 模板 我知道 PyObjC 本身可以工作 因为我已经运行了这个脚本 http svn picidae net trunk pici server
  • 从二进制文件中删除 protobuf C++ 编译的路径字符串

    当我编译使用 Protobuf 的 C 程序 然后运行 linux 时strings二进制文件上的命令 其中一个字符串是生成的路径cc文件 包含我的主目录和所有内容 显然 我想从二进制文件中删除我的主目录和其他个人信息 该路径从何而来以及如
  • c 中 qsort() 函数中的 cmpfunc

    有人可以解释一下吗cmpfunc这是用在qsort功能 什么是a and b在这个函数中 它们指向什么 int cmpfunc const void a const void b return int a int b a and b in
  • 如何在 Django 中使用 Pusher?

    我正在尝试使用 Pusher 和 django 构建一个应用程序 我浏览了一些链接 例如https github com pusher django pusherable https github com pusher django pus
  • 删除 Android Gallery 小部件中的边框?

    如何去除图库图像周围丑陋的灰色边框 在 ImageAdapter 中排除此行以停止加载该预设 imageBackground ta getResourceId R styleable Gallery1 android galleryItem
  • 为什么 jsessionid 附加到每个 url 后面?

    我正在 Apache Tomcat 上使用 Spring 框架部署一个应用程序 直接从 Tomcat 运行应用程序时 任何 URL 中根本没有附加 jsessionid 但是在将应用程序映射到域并尝试运行它之后 我在应用程序中的每个 URL
  • SPARQL 两个节点之间的路径

    给定一个图 prefix da
  • Delphi:将 TImage 置于前面

    看下图 如您所见 我无法将按钮发送到后面 这仅适用于标签 那么我该如何发送TImage到前面以其透明度 顺便说一句我读过这个相关问题 https stackoverflow com questions 5369681 controls on