如何实现窗口背景透明,而表层的绘制内容是不透明的?

0

我已经知道可以通过 win32 api 设置一个窗口的透明度,但是这会使得整个窗口都是透明的。

我希望实现在透明的窗口背景上绘制不透明的内容,怎么做呢?

ava
huidong

2022-12-22

1

我研究了四天了,加上今天是第五天了,发现了一个邪道方法,小部分应用在电脑颜色诱色少女身上,SetLayeredWindowAttributes 函数 不好用,只能用 UpdateLayeredWindow 加 getimage 加 saveimage 加 StretchBlt

加 loadimage,这几个函数组合能实现,窗口背景透明但是绘制的内容不透明,先使用 UpdateLayeredWin 设置全场透明,再 使用 getimage 获取绘制的内容,输出 saveimage  函数,saveimage  函数输出至 桌面,loadimage 加载 saveimage  函数保存至桌面的绘图,至 StretchBl 函数 再用 putimage 函数输出,就不是透明的了,很实用。其中最重要的是StretchBlt 函数,该函数的 hdc 能破坏掉 UpdateLayeredWin 的全场透明。即是 BUG 也是实用的

ava
随波逐流

2022-12-23

谢答。。这么麻烦啊,这感觉投入项目实践有点不太好 -  huidong  2022-12-23
技术讨论社区