程序的界面设计现在基本上有贴图和程序绘制(包括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+绘制图片,
模仿控件(这种方法适用于按钮类控件)。
对于非按钮类控件,就只能用双窗体联动的形式解决了,
第一个窗体作为渲染透明效果的载体,第二个窗体为无边框类型,覆盖于第一个窗体之上,
随第一个窗体移动,这个窗体作为所有控件的载体。
效果如图
上位机MFC玻璃窗体效果源代码
下载地址:
下载后,可直接运行目录的可执行程序查看效果。
下面是目录内的全部文件,可以作为参考,觉得例程有帮助再下载。
上位机MFC玻璃窗体效果源代码
GdiPlus.dll
GDIPNG.APS
GDIPNG.clw
GDIPNG.cpp
GDIPNG.dsp
GDIPNG.dsw
GDIPNG.exe
GDIPNG.h
GDIPNG.ncb
GDIPNG.opt
GDIPNG.plg
GDIPNG.rc
GDIPNGDlg.cpp
GDIPNGDlg.h
PngButton.cpp
PngButton.h
ReadMe.txt
resource.fd
resource.h
StdAfx.cpp
StdAfx.h
XPButton.cpp
XPButton.h
Za_aaa.cpp
Za_aaa.h
未命名-1.png
未命名-10.png
未命名-100.png
未命名-11.png
未命名-12.png
inc(子文件夹)
GdiPlus.h
GdiPlusBase.h
GdiPlusBitmap.h
GdiPlusBrush.h
GdiPlusCachedBitmap.h
GdiPlusColor.h
GdiPlusColorMatrix.h
GdiPlusEnums.h
GdiPlusFlat.h
GdiPlusFont.h
GdiPlusFontCollection.h
GdiPlusFontFamily.h
GdiPlusGpStubs.h
GdiPlusGraphics.h
GdiPlusHeaders.h
GdiPlusimageAttributes.h
GdiPlusImageCodec.h
GdiPlusImaging.h
GdiPlusInit.h
GdiPlusLineCaps.h
GdiPlusMatrix.h
GdiPlusMem.h
GdiPlusMetaFile.h
GdiPlusMetaHeader.h
GdiPlusPath.h
GdiPlusPen.h
GdiPlusPixelFormats.h
GdiPlusRegion.h
GdiPlusStringFormat.h
GdiPlusTypes.h
lib(子文件夹)
GdiPlus.lib
Release(子文件夹)
res(子文件夹)
GDIPNG.ico
GDIPNG.rc2
png1.bin
QQ1.png
QQ2.png
QQ3.png
QQ4.png
QQ5.png
QQ6.png
rhors (91).ico
Thumbs.db
Z1.png
Z100.png
Z3.png
Src(子文件夹)
GdiplusH.h
ImgDialogBase.cpp
ImgDialogBase.h
Utility.cpp
Utility.h
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
gkbc8.com
|