工控编程吧
标题: 上位机MFC玻璃窗体效果源代码 [打印本页]
作者: qq263946146 时间: 2019-7-15 13:09
标题: 上位机MFC玻璃窗体效果源代码
程序的界面设计现在基本上有贴图和程序绘制(包括GDI,GDI+,GDK+等),
前者界面成型快,开发起来比较简单,但是界面比较死板。
后者开发起来比较复杂,都是像素级别的程序绘制,需要的计算机图形学知识比较多,
开发周期很长,但是开发出来的UI非常的耐用,动态效果基本上是想得到就做得到。
言归正传,这次的玻璃界面还是运用了GDI+的图形绘制库,载入带有透明通道的窗体界面图片,
图片的类型是PNG的,再运用UpdateLayeredWindow这个API进行透明通道的绘制。
下面是这个API的详细参数:
UpdateLayeredWindow(hwnd:HWND; // 窗口句柄
hdcDst:HDC; // 目标 DC
ptDst:pPoint; // 目标的 TopLeft
Size:pSize; // 显示 Size
hdcSrc:HDC; // 源 DC
ptSrc:pPoint; // 源 DC 的 TopLeft
crKey:COLORREF; // 透明颜色值
Blend:pBlendFunction; // Alpha 混合函数
dwFlags
Word // 一组标志位常量
);
运用这个API结合GDI+来绘制不规则窗体的实例代码上网有很多,在这里就不多说了。我们主要说明一下运用这种方法出现的一种情况,
就是窗体界面上面拖放什么控件,都无法显示出来,但是,控件能够很好的响应事件。
刚遇到这个问题,我也头疼了很长时间,
但是,今天想出个比较笨的方法,但也根本的解决了这个问题,就是运用控件响应事件来运用GDI+绘制图片,
模仿控件(这种方法适用于按钮类控件)。
对于非按钮类控件,就只能用双窗体联动的形式解决了,
第一个窗体作为渲染透明效果的载体,第二个窗体为无边框类型,覆盖于第一个窗体之上,
随第一个窗体移动,这个窗体作为所有控件的载体。
效果如图
(, 下载次数: 0)