记录一次WPF内嵌Winform然后在这个Winform前面再加遮罩层内容
故事是这样的: WPF做一个高性能摄像头采集且显示画面,但是我的C#没有实现直接使用GPU渲染画面,因此在做显示的时候占用CPU过高。
后同事使用C++写了个库, 让我传给他一个窗口句柄,他就来渲染。OK采用WPF里内嵌一个winformHost, 取一个句柄给他,画上。 以为故意就在这告一段落了。
可哪知,WPF里需要做AI计算后人脸所在的广框。也就是我需要在原画面上再加一些内容。类似上面winform前面再加个一层遮罩。
第一想法 直接拿着这个句柄向里面画内容:
// 使用 Graphics 类进行绘图 using (Graphics graphics = Graphics.FromHdc(hDC)) { // 创建画刷和绘制矩形 using (Pen pen = new Pen(Color.Red, 3)) // 设置矩形边框颜色和宽度 { graphics.DrawRectangle(pen, left, top, right - left, bottom - top); } }
可哪曾想与C++的画 的画面直接冲突 会把我的直接覆盖掉。
第二想法 一个窗口不行再加一个窗口。 OK了,可问题是这两个窗口前后关系没搞好。 如果Topmost 吧 又直接置顶所有的前面了。
最后。。。想到。。。父子关系 也就是前面 的 Owner = 置底的那个 看着如此简单的问题当时可是半天都没想到 因此故意记录下来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南