使GDI绘图不可点击
本文关键字:GDI 绘图 | 更新日期: 2023-09-27 18:09:58
我有一个透明的WinForms应用程序与GDI图纸(我使用它作为覆盖)。问题是,每当我点击GDI绘图时,焦点就会转到应用程序窗口。我怎么把它变成?
您需要使用右颜色作为TransparencyKey
!
使得Form
除了Color.Fuchsia
。
一个不能真正解释的,更不用说记录的,"功能",可能已经开始作为一个bug,但现在,希望永远永远,让我们从可点击的透明表单切换到我们可以绘制和不可点击的,通过我们可以与背景项目进行交互…
// click-through:
this.BackColor = Color.Fuchsia;
this.TransparencyKey = this.BackColor;
// clickable:
this.BackColor = Color.FromArgb(255, 147, 151, 162); // any non-fuchsia color
this.TransparencyKey = this.BackColor;
只要你正确地实现了覆盖(一个拥有的窗口显示与显示(所有者)过载,例如),那么它只需要一小块复制/粘贴代码。Windows询问你点击了窗口的哪个部分,你可以回答"它是透明的"。所以它会继续寻找任何感兴趣的人,它的父窗口是下一个。
:
protected override void WndProc(ref Message m) {
const int WM_NCHITTEST = 0x84;
const int HTTRANSPARENT = -1;
if (m.Msg == WM_NCHITTEST) m.Result = new IntPtr(HTTRANSPARENT);
else base.WndProc(ref m);
}