gpt4 book ai didi

delphi - 防止透明表单上的点击

转载 作者:行者123 更新时间:2023-12-03 15:50:44 26 4
gpt4 key购买 nike

我想在表单中绘制函数,但表单背景不可见。创建了一个 TForm,将透明颜色设置为 True,将 TransParentColorValue 设置为 clWhite。只需在上面放一个 TImage,在位图上绘制一个函数,将其分配给图像,效果就很好。有一个问题。我无法再点击表格了。对表单标题和客户区域的任何单击都会导致对基础应用程序的单击。这是由于将TransparentColor 设置为True 导致的。如何防止这种“点击通过”?

更新我尝试了 Sertac 的建议,并得到了一些显着的结果。我按如下方式准备位图:

   Bitmap.Canvas.Brush.Color := clFuchsia;
Bitmap.Canvas.FillRect (Rect (0, 0, Bitmap.Width, Bitmap.Height));

当“颜色”设置为 clWhite 以及“表单透明颜色值”时,表单完全启用点击功能。

均设置为clBlack,表单可以移动,但边框无法调整大小,系统按钮不起作用

两者都设置为 clFuchsia,它的行为与普通表单一样。好吧,现在可以了,但也许有人得到了解释?

最佳答案

当使用某些特定颜色时,API 的行为似乎很奇怪。白色是一个明显的问题,黑色的问题稍微少一些。我尝试过黄色、灰色、纽扣面、紫红色等,它们看起来不错。

如果有人想在不使用 Delphi 的“透明...”属性的情况下重复该问题,这里有一个小片段:

procedure TForm1.Button1Click(Sender: TObject);
var
Color: DWORD;
DC: HDC;
begin
Color := $00FFFFFF;
SetWindowLong(Handle, GWL_EXSTYLE,
GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED );
SetLayeredWindowAttributes(Handle, Color, 255, LWA_COLORKEY);

DC := GetWindowDC(Handle);
SetDCBrushColor(DC, Color);
FillRect(DC, Rect(10, 10, 100, 80), GetStockObject(DC_BRUSH));
ReleaseDC(Handle, DC);
end;


注意:如果有人提供带有明确解释的答案,我很乐意删除此答案。

关于delphi - 防止透明表单上的点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com