png透明窗体全攻略(控件不透明)vc++程序指导

png透明窗体全攻略(控件不透明)vc++程序指导

ID:6769261

大小:99.50 KB

页数:8页

时间:2018-01-25

png透明窗体全攻略(控件不透明)vc++程序指导_第1页
png透明窗体全攻略(控件不透明)vc++程序指导_第2页
png透明窗体全攻略(控件不透明)vc++程序指导_第3页
png透明窗体全攻略(控件不透明)vc++程序指导_第4页
png透明窗体全攻略(控件不透明)vc++程序指导_第5页
资源描述:

《png透明窗体全攻略(控件不透明)vc++程序指导》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、这两天在研究透明窗体,总算略有小成。网上大部分文章都是介绍到把窗体弄透明就没有下文。其实窗体透明并不难,难就难在透明的窗体上还要放控件。今天我就把窗体透明一直到控件不透明怎么制作一块给写了吧。先截张图诱惑下你们,如果你没兴趣就没必要再看下文了,有兴趣的话就继续往下看吧^_^!看好了,这是XP系统,未装.net。我的Photoshop学的不太好,把玻璃片弄的太透了些,如果你们有好的美术,再加上这种技术,肯定会如鱼得水。下面就来详细说说它的制作过程吧:    第一步:在VC6中使用GDI+:你得从网

2、上弄个GDI+forXP的库,大约500K。如果找不到的话,找我QQ要吧,我会把这个窗口的源程序一起发给你的。把它解压后,将所有文件还包括子目录中的文件复制到你的项目目录。在stdafx.h中加入以下代码:#include"gdiplus.h"////请修改为你的头文件路径usingnamespaceGdiplus;#pragmacomment(lib,"gdiplus.lib")////请修改为你的.lib文件路径    我的项目名为Test,所以在TestApp中加入全局变量ULONG_PT

3、RgdiplusToken;    在BOOLCTestApp::InitInstance()中加入这两行:GdiplusStartupInputgdiplusStartupInput;GdiplusStartup(&gdiplusToken,&gdiplusStartupInput,NULL);    记住在线程退出后要御掉GDI+,它很占资源的,在intCTestApp::ExitInstance()中加入这行:GdiplusShutdown(gdiplusToken);    一切准备工作

4、就绪,开始制作窗口了。    二、制作PNG图像:这不是程序员的事,是美工的事,可是目前美术技术都是我一人,所以干脆连PNG一起教你们做了吧。    先打开Photoshop(简称PS),打开一张背景图,在背景图上使用圆角矩形工具画个矩型,再用图层样式调出如下绿色玻璃片:什么?怎么个调出来的?你还真以为我什么都教你?要是我连PS的过程都写上来,那我干脆写本书得了。体谅一下吧,写教程是需要大量时间的,所以能省则省。    将背景去掉,将玻璃保存成PNG图片,不需要设置任何参数,PNG是自动使用这种

5、与背景溶合透明的,强大吧^_^!再用同样的方法,制作绿色按钮,记住做界面的时候,一般要使用一种主色调,在这里我随便用了下绿色作为主色调,现在网络流行的是蓝色。文字则不能用RGB色彩,这样用户容易产生视觉疲劳。我做这个界面只是想试试绿玻璃好不好看,结果觉得不怎么好看,以后有空再弄个蓝玻璃试试吧。    按钮不需要保存成PNG,因为我不准备将它透明。至于这种“透明控件”的文章,你在网上一搜一大堆。    继续吧!还要做其它3个按钮,“确定”的按下效果,“取消”的拾起和按下效果,在这里我就不截图了。 

6、   美术都搞定,开始写代码。    三、写代码之前,我先说说工序:先用SetWindowLong将对话框设置成层级窗体,再使用GDI+显示图片。显示成功后再用UpdateLayeredWindow函数进行透明处理。    现在问题出来了,你会发现你原来在窗口上画的控件一概不显示,怎么办呢?我是在这个窗口上再盖上另一个对话框,设置成启动窗体那种样式,所有消息都在这个前景窗体上处理。    问题又来了,前景窗体盖上去,后面窗口又看不见了,怎么办呢?我又想了办法,在前景窗体加了透明色,在这里我是用粉

7、红色,因为在电脑中粉红色用的最少,因为它很刺眼。用这个方法的缺点就是你的控件不能有粉红色。    最后将两个按钮改成位图按钮即可。    现在来看详细制作过程吧:    定义成员变量:在TestDlg.h中定义BLENDFUNCTIONm_Blend;HDCm_hdcMemory;    改成层级窗体:在BOOLCTestDlg::OnInitDialog()函数中加入如下代码://窗体样式为0x80000为层级窗体DWORDdwExStyle=GetWindowLong(m_hWnd,GWL_

8、EXSTYLE);SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);    加载PNG图片://绘制内存位图HDChdcTemp=GetDC()->m_hDC;m_hdcMemory=CreateCompatibleDC(hdcTemp);HBITMAPhBitMap=CreateCompatibleBitmap(hdcTemp,500,500);SelectObject(m_hdcMemory,hBitMap);//使用GDI+载入PNG图

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。