在分层窗口上绘制HBITMAP。怎么了?
大家好, 我的最终目标是在屏幕上绘制一个包括alpha在内的PNG文件 - 这不是进入自己的窗口,而只是在桌面上的某个地方. 将PNG加载到HBITMAP中的零件现在起作用(以不同的方式进行了测试),但我不设法绘制它,包括Alpha. 据我所知,最好的方法是使用Alyered Windows.所以我为重做几个例子和小教程做了很多. 以下代码没有问题编译,并且没有提示任何消息(这意味着淋浴器("#")函数从未被调用). 在屏幕上没有什么可见的:/ 很抱歉它已经很长时间了...希望有人想至少快速看它. LRESULT CALLBACK WndProc(HWND hWindow, UINT msg, WPARAM wParam, LPARAM lParam); int main(HINSTANCE hInstance) { WNDCLASSEX WndClass; char sClassName[] = "mainClass";
2 2023-12-06
编程技术问答社区
如何在窗户外面绘制?
查看Windows tooltips类提示窗口,我看到它绘制了其落下阴影外部提示窗口的实际矩形. 使用 spyxx - 我可以获取工具提示的窗口矩形和类样式: Rectangle: (440, 229)-(544, 249), 104x20 Restored Rect: (440, 229)-(544, 249), 104x20 Client Rect: (0, 0)-(104, 20), 104x20 您会注意到,您看到的滴阴影在物理上 正在绘制的窗口.我如何在窗户周围的窗外画一个阴影,而我的窗户我的窗户? 注意:没有使用标准CS_DROPSHADOW类样式来绘制阴影.我已经通过实验确认了这个阴影,还可以在 spyxx 中看到类样式的窗口;它不使用CS_DROPSHADOW: Windows Styles: 94000001 WS_POPUP 80000000 WS_VISIBLE 1000000
2 2023-12-05
编程技术问答社区
Win32: 如何在非矩形的分层窗口上制作阴影?
我已经创建了一个分层窗口 ws_ex_layered 扩展风格: wndClass.ExStyle = wndClass.ExStyle | WS_EX_LAYERED; Windows将使用黑色作为色度钥匙颜色值.我要留下黑色的大边界,使问题很明显: 构造窗口后,我将其告诉SetLayeredWindowAttributes(hwnd, 0x00000000, 255, LWA_COLORKEY); 现在,弹出分层窗口显示出部分透明: 问题是最后一步.我想使用wndClass.Style = wndClass.Style | CS_DROPSHADOW; 出现了滴阴影,但是阴影围绕着原始矩形窗口,并且没有考虑到分层窗口提供的窗口的透明度: 有人知道我错过了哪种神奇的选项,这些选项会使Drop Shadow荣誉非矩形分层窗口? 此问题出现的另一个示例是您不包括6px填充/保证金. Windows®主题绘制的提示窗口是非矩形的.这留下了一个很小
0 2023-12-04
编程技术问答社区
如何创建分层阿尔法透明的儿童窗口?
我正在尝试创建透明的子窗口. procedure TForm1.BtnGoClick(Sender: TObject); var bmp:TBitmap; BitmapPos: TPoint; BitmapSize: TSIZE; BlendFunction: _BLENDFUNCTION; exStyle: Cardinal; begin bmp := TBitmap.Create; bmp.LoadFromFile('my32bitbitmap.bmp'); exStyle := GetWindowLongA(Form2.Handle, GWL_EXSTYLE); if (exStyle and WS_EX_LAYERED = 0) then SetWindowLong(Form2.Handle, GWL_EXSTYLE, exStyle or WS_EX_LAYERED); BitmapPos := Point(0, 0);
46 2022-08-24
编程技术问答社区
Win32: 如何在我的窗口外画画?
查看 Windows tooltips 类提示窗口,我看到它在提示窗口的实际矩形外部 绘制了阴影. 使用 SpyXX - 我可以获得工具提示的窗口矩形和类样式: Rectangle: (440, 229)-(544, 249), 104x20 Restored Rect: (440, 229)-(544, 249), 104x20 Client Rect: (0, 0)-(104, 20), 104x20 您会注意到,您看到的投影在物理上在正在绘制的窗口之外.我如何在窗外在窗外在窗外画阴影? 注意:阴影不是使用标准的CS_DROPSHADOW类样式绘制的.我已经通过实验证实了这一点,并且还可以在SpyXX中看到窗口的类样式;它不使用 CS_DROPSHADOW: Windows Styles: 94000001 WS_POPUP 80000000 WS_VISIBLE 10000000 WS_C
362 2022-08-10
编程技术问答社区
分层窗口、UpdateLayeredWindow、alpha混合和鼠标事件
在Windows Forms和C#中,我正在使用带有WS_EX_LAYERDY的表单,并调用 UPDATELAYERDERDWINDOW ,将背景设置为透明/alpha混合的图像: NativeMethods.BLENDFUNCTION blend = new NativeMethods.BLENDFUNCTION(); blend.BlendOp = NativeMethods.AC_SRC_OVER; blend.BlendFlags = 0; blend.SourceConstantAlpha = 255; blend.AlphaFormat = NativeMethods.AC_SRC_ALPHA; NativeMethods.UpdateLayeredWindow(form.Handle, screenDc, ref topPos, ref size, memDc, ref pointSource, 0, ref blend, NativeMethods.UL
3160 2022-07-19
编程技术问答社区