问题标签 [layered-windows]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
386 浏览

c++ - 透明窗口上书写的文本周围的透明颜色键的彩色边框

我创建了一个带有颜色键的透明分层窗口,用于使窗口透明。到目前为止,一切正常。在上面写文字 - 使用 GDI+ - 也可以......

我遇到的问题是,文本在字母周围有一个很细的 colorkey-color 边框......

我在 WM_PAINT 中所做的是:

我的意思的截图:http: //imageshack.us/photo/my-images/709/cutp.jpg/

任何人都知道如何避免这种情况?

0 投票
1 回答
1802 浏览

delphi - 如何创建子分层 alpha 透明窗口?

我正在尝试创建透明的子窗口。

它几乎可以工作:Form2 成为 Form1 内的漂亮透明窗口。但看起来 Form2 并没有随着 Form1 移动。当我移动 Form1 时,Form2-Window 移动,但在屏幕上我看到它的时候。当 Form1 被移动时,我无法点击 Form2,点击通过,所以我知道窗口被移动了。

那么问题是如何使没有这些功能的子透明窗口?(只是随着它的父母移动的普通窗口)

0 投票
1 回答
1846 浏览

c++ - 分层窗口上的C ++ GDI +绘图图像不起作用

所以我在 SO 上找到了很多关于将图像绘制到分层窗口的代码示例、指南和答案。我尝试使用纯HBITMAPS 和 WIC 库进行绘图,现在我正在使用 GDI+ 进行绘图(这更简单,似乎更易于使用,到目前为止它已经解决了很多由以下原因引起的错误错误的 WIC 代码)。

我目前卡在UpdateLayeredWindow. 无论我尝试什么,我都无法让它工作。现在,它返回 87,或ERROR_INVALID_PARAMETER. 问题是,哪一个是不正确的?我难住了!UpdateLayeredWindow除了拒绝工作之外,下面的代码似乎是解决方案。

我究竟做错了什么?

这是设置 HDC/位图信息/图形对象的代码。

以上工作正常 - 我逐步完成它并且所有指针都工作。

这是绘制PNG的方法。

拔我的头发!帮助?

编辑:我刚刚决定重新编写对UpdateLayeredWindow函数的调用,这解决了不正确的参数问题。这是我想出的。但是,它仍然不起作用。我究竟做错了什么?

0 投票
1 回答
1473 浏览

winapi - WM_NCHITTEST 不改变鼠标光标

我有一个分层窗口 (WS_EX_LAYERED),它实现了自定义 NCHITTEST 和 NCCALCSIZE,以使我的窗口的客户端矩形与窗口矩形相同。我的窗户尺寸和油漆正确;当光标靠近窗口的底部边缘时,我可以从 WM_NCHITTEST 返回 HTBOTTOM 以导致从底部开始垂直调整窗口大小类型的操作。但是,我没有得到垂直调整大小光标。有没有办法解决这个问题而不必实现 WM_SETCURSOR 并测试指针的位置与窗口的边缘?

这是我的代码片段:

0 投票
1 回答
4244 浏览

c++ - 将 HBITMAP 绘制到分层窗口上。怎么了?

大家好,美好的一天,

我的最终目标是在屏幕上绘制一个包含 alpha 的 PNG 文件——这意味着不是在自己的窗口中,而是在桌面上的某个地方。将 PNG 加载到 HBITMAP 中的部分现在可以工作(以不同的方式进行测试),但我无法将它包括 alpha 在内。

据我所知,最好的方法是使用分层窗户。所以我做了很多工作来重做几个例子和小教程。

以下代码编译没有问题并且没有提示任何消息(这意味着永远不会调用 showError("#") 函数)。

然而屏幕上没有任何可见的东西:/

抱歉,这么长...希望有人愿意至少快点看一下..

顺便说一句,如果我在 UpdateLayeredWindow 中使用 ULW_OPAQUE 而不是 ULW_ALPHA,则会出现一个大小合适的黑色窗口,因此认为问题必须是与 PAINTSTRUKT 或 BitBlt 函数相关的最小问题。但是我尝试了很多方法而没有任何改变.

希望有人可以提供帮助。非常感谢您!

0 投票
1 回答
846 浏览

c++ - 从分层窗口获取 HBITMAP - 不正确的数据

我创建了一个分层窗口(带有 WS_EX_LAYERED),大小约为 400X300 像素。
绘制窗口时(使用UpdateLayeredWindow)一切正常。

问题是绘制后我无法获取窗口的 HBITMAP。当试图通过窗口的 HDC 获取 HBITMAP 时,我得到一个空(黑色)位图,它是我整个桌面的大小(1920X1080 像素,400X300 像素)。

有人知道是否有可能获得分层窗口的 HDC\HBITMAP 吗?

代码示例

这是我如何绘制分层窗口的代码(同样,效果很好):

这是我如何捕获窗口的位图并将其保存到文件的代码:(注意:它适用于“普通”窗口,例如计算器)

谢谢!

0 投票
1 回答
1936 浏览

c# - 分层窗口、UpdateLayeredWindow、alpha 混合和鼠标事件

在 Windows 窗体和 C# 中,我使用具有 WS_EX_LAYERED 样式的窗体,并调用UpdateLayeredWindow将背景设置为透明/alpha 混合的图像:

在图像透明的窗体区域上,窗体不接收鼠标事件。他们转到表格下方的窗口。

是否可以设置窗口样式或选项以使表单能够在其整个表面上接收鼠标事件(鼠标移动、鼠标按下等)?

0 投票
1 回答
206 浏览

winapi - LayeredWindows 和可变 alpha 半透明 - 使用画笔?

我有一个分层窗口(使用 SetLayeredWindowAttributes)。如果我将整个窗口的 alpha 设置为 128 并在其上绘制黑色矩形,它会按预期工作(黑色矩形以大约 50% 的不透明度显示)。

但是,如果我在整个窗口上设置 aplha(当我调用 SetLayeredWindowAttributes 为 255 时),然后用设置为 50% 的画笔绘制黑色矩形,它们黑色矩形是纯实心的,没有任何半透明性。

我的印象是,一旦我以这种方式创建了一个分层窗口,我就可以使用不同级别的每像素 Alpha 来绘制它,这样这两个窗口就会绘制两个不透明度级别:

但是这两个矩形都具有相同的不透明度(我希望一个为 200,一个为 25)。我只能控制整个窗口的不透明度(SetLayeredWindowAttributes 中的 255)。

我在这里缺少什么,以便我可以以不同的 alpha 半透明度绘制不同的元素,甚至只是矩形?

顺便说一句,我想要 SetLayeredWindowAttributes(而不是 UpdateLayeredWindow),因为我正在使用设备上下文进行主动绘图。后一种方法需要一次性绘制并提供位图。谢谢!戴夫

0 投票
0 回答
436 浏览

c# - c#中带有分层窗口的启动画面

在多层窗口中,我可以点击工作,但在我的窗口中我的背景图片后面仍然有一些灰色,我该如何删除它?我查看了堆栈溢出和代码项目,但找不到解决方案。

这是我的代码:

0 投票
1 回答
1482 浏览

c++ - Direct2D:透明父窗口上的不透明子窗口

我想创建一个具有透明背景的 Direct2D 应用程序,上面放置了一些不透明的复杂控件。问题可以分解为几个子问题:

架构:控件是否应该作为子窗口来实现?我认为这是正确的方法,而不是创建实现子窗口功能的 Direct2D 多边形。

我试图通过初始化父窗口来实现这一点:

并将子窗口创建为WS_CHILD。这导致了一个孩子,包括背景在内的所有 D2D 溺水都是透明的。我找不到让孩子变得不透明的方法。当我将子窗口创建为WS_POPUPWS_OVERLAPPED时,不透明度问题得到解决,但子窗口位于与父窗口无关的桌面上。

分层窗口? 我选择使用分层 Windows,但由于我的目标是 VistaSP2 及更高版本,因此可能会有更好的解决方案。我尝试了这里提供的解决方案,但我也未能实施。