问题标签 [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.
winapi - 在父窗口上绘制带有图像的半透明子窗口
我需要在WS_OVERLAPPED
窗口中制作鸟类动画(如下图)。动画由 8 个图像表示:
图像中的蓝色(即RGB(0, 255, 255)
)必须是透明的(请参见下面的屏幕截图)。
我想使用CreateWindowEx()
(鸟将由分层窗口表示)和WS_EX_LAYERED
参数来做到这一点。不幸的是鸟必须是WS_CHILD
。在Windows 7中混合WS_EX_LAYERED | WS_CHILD
是不合法的:
Windows 8:顶级窗口和子窗口支持 WS_EX_LAYERED 样式 。以前的 Windows 版本仅支持顶级窗口的WS_EX_LAYERED 。
最终效果应该是这样的(我已经画了窗口的背景——唯一的问题是鸟):
我怎样才能达到这个效果?如何在父窗口中为鸟设置动画?
如果您有任何想法如何实现具有透明背景颜色的鸟类动画,请分享。
c# - 如何仅重绘分层窗口的一个区域?
我有一个通常以这种方式绘制的分层窗口:
但是,这显然在每次调用时都会重绘整个窗口。在大窗口上,这是一个相当大的性能消耗。(即使在我的顶级 PC 上,这让我想知道人们如何在 Win2K 中处理它)
如果我阅读了有关分层窗口的 Microsoft 论文,它说:UpdateLayeredWindow 总是更新整个窗口。要更新窗口的一部分,请使用传统的 WM_PAINT 并使用 SetLayeredWindowAttributes 设置混合值。
我只是无法理解上面的内容。WM_PAINT 应该如何访问分层窗口位图并仅在窗口上重绘它的一部分?据我了解,分层窗口只是禁用 WM_PAINT 消息并期望用户自己绘制窗口。显然没有办法将 WM_PAINT 绑定到完成的自定义绘图。
我错过了一些非常明显的东西吗?
c# - 是否可以使弹出窗口充当分层窗口
我想知道弹出窗口是否可以是分层窗口。
我正在使用编码器 4,并且有一个属性允许程序不捕获分层窗口。
这是我在工具提示中显示提要的代码
wpf:
这个问题是 Encoder 4,只接受预览窗口的 HandleRef。
这就是我对 Encoder 所做的:MediaSource is a LiveDeviceSource
我想要的是有一个工具提示,显示网络摄像头预览但不与屏幕一起记录。
如果我不使用弹出窗口,则提要不会显示。Altought Encoder 理解它是一个 LayeredWindow 并且不记录它。
如果我使用提要显示的弹出窗口,但它正在被记录。不知何故,即使它在工具提示中,它也不再是 layeredWindow 了。
一些帮助将不胜感激,并得到回报=)
c++ - WS_EX_LAYERED 窗口在 RDP 上显示为不可见
我使用纯 Win32 为 Windows 开发了一个屏幕捕获应用程序 - 没有 MFC 或 ATL。
为此,我使用了两个顶级分层窗口 - 一个(完全透明)捕获鼠标事件,如拖动,另一个(半透明)用作高亮矩形。当用户选择要抓取的屏幕区域时,我使用 SetWindowPos() 来更改半透明高亮窗口的大小和位置。
这在物理设备上运行良好,但我发现在 RDP 上的虚拟机(Windows 7)上,我的半透明窗口根本不显示。我仍然可以捕获屏幕,但不能在捕获过程中向用户提供视觉反馈。
我尝试将我的 RDP 设置更改为使用 32bpp,但这无济于事。
我在用:
在我的突出显示窗口的 WM_CREATE 事件中。
有人知道如何在 VM 上的 RDP 上显示半透明分层窗口吗?
c++ - C++ 分层窗口和 WM_MOUSEMOVE
我正在尝试在 C++ 和 WinAPI 中制作一个透明的屏幕保护程序。
到目前为止它在 Windows XP 上运行良好,但在 WES7 上我有以下问题: 通过使我的屏幕透明,我无法收到任何WM_MOUSMOVE
消息。
我已经得到了byAlpha
必须大于 0 的信息,因为否则我不会收到任何鼠标消息,但我仍然会收到键盘消息以及鼠标点击。
希望你能帮我解决这个问题。
c++ - 为整个桌面设置光标
我有一个分层窗口,具有屏幕大小但几乎完全透明。(除了用户点击的小十字)
如何为此窗口或整个桌面设置自定义光标?我在窗口类中指定了一个类光标,但它没有显示它(我希望这是因为透明度)
另外,我想知道窗口中的透明度实际上是如何管理的:为什么我不能收到WM_LBUTTON
消息如果鼠标在窗口的透明区域?有没有办法让窗口的透明区域像彩色区域一样工作?
c++ - 重绘分层窗口的正确方法
我有一个使用WS_EX_LAYERED
窗口样式创建的窗口。我目前正在使用 GDI+ 绘制内存位图,并UpdateLayeredWindow
用于更新分层窗口的图形内容。我打算将此窗口用作我的应用程序的主窗口,这需要它经常重绘。
看到分层窗口没有收到WM_PAINT
窗口消息[?],我需要想出一个适当的方法来重新绘制窗口。优化不是必需的,但拥有你的蛋糕并吃掉它总是很好的。因此,我正在寻找“正确”的方法来使用。
到目前为止,这是我的想法:
我猜想在
BitBlt
ing 或类似之前渲染到屏幕外位图上是个好主意。每秒渲染 60 帧应该(超过?)足够了(但这与其他应用程序的帧速率相比如何?)。
可能的解决方案:
-
很有用,因为通过指定超时值,我可以达到我想要的每秒帧数,而无需测量渲染“帧”所需的持续时间。
由于消息的频率和速度,可能会导致输入或其他滞后。
仅在特定事件发生时渲染帧,例如窗口调整大小。
需要我弄清楚所有需要重绘的事件。
将大大减少被渲染的不必要帧的数量。
当消息队列中没有消息时渲染帧,通过检查
PeekMessage
.这可能会减慢窗口消息的处理速度。
这将导致 CPU 使用率过高,因为正在处理的帧数超过了必要的帧数。
创建一个新线程来执行渲染循环。
- 必须执行时序计算以保持稳定的帧速率。
c++ - Windows API:UpdateLayeredWindow 返回值
我的程序中有一个分层窗口,它似乎(视觉上)工作正常,但返回代码UpdateLayeredWindow
应该是成功的非零值。在我的例子中,它是 0,并GetLastError
返回 87,这是一个不正确的参数。有人可以告诉我我的设置是否有问题吗?这是完整的功能,窗口样式是WS_EX_LAYERED|WS_EX_TOPMOST
和WS_POPUP
。
c# - 如何在c#中的分层窗口上显示网页
大家好,我正在开发一个窗口应用程序,在该应用程序中,我想在 C# 中包含 .PNG 的分层窗口上显示一个网页,我可以在其中一个上显示两个带有图像的分层窗口,如屏幕截图所示
但我想在分层窗口上渲染网页。如果有人对此有任何解决方案,将不胜感激。MainForm.cs
PerPixelFormAlpha.cs
user-interface - Win32 LayeredWindow 提供糟糕的视觉效果
我正在开发一个 UI 系统,它具有所有智能功能,如面板撕下和对接等。现在我的任务是在屏幕上创建一个覆盖层,显示撕下或可对接面板的位置。与视觉工作室几乎相同的东西。为此,我使用了一个自定义的分层窗口类,它会在需要时显示出来。之后我开始挖掘以达到所需的效果。我以前使用标准的 GDI 函数,基本上它们没问题。但是这次我按照文档建议使用 UpdateLayeredWindow 来完成我的任务并从位图中加载 32 位图像,而不是使用 GDI 函数绘制它。所以这里我有一个 128x128pixel 宽的 bmp,alpha 通道为 222,RGB 通道为 255 0 0
以下是我用于初始化和绘图的方法。
窗口样式有这个额外的 WS_EX_LAYERED|WS_EX_TRANSPARENT|WS_EX_TOPMOST
这就是我得到的。所以你可以看到发生的混合确实考虑了每像素的 alpha,但它的混合工作很糟糕。任何想法如何调整它?