半透明AlphaBlend 实现界面或某块资源的半透明
转:http://blog.csdn.net/lsmdiao0812/article/details/3324640?ADUIN=541540095&ADSESSION=1394756487&ADTAG=CLIENT.QQ.5281_.0&ADPUBNO=26292
1 AlphaBlend
函数功能:该函数用来显示透明或半透明像素的位图。
函数原型:AlphaBlend(HDC hdcDest,int nXOriginDest,int nYOriginDest,int nWidthDest,int hHeightDest,HDC hdcSrc,int nXOriginSrc,int nYOriginSrc,int nWidthSrc,int nHeightSrc,BLENDFUNCTION blendFunction);
参数:
hdcDest:指向目标设备环境的句柄。
nXoriginDest:指定目标矩形区域左上角的X轴坐标,按逻辑单位。
nYOriginDest:指定目标矩形区域左上角的Y轴坐标,按逻辑单位。
nWidthDest:指定目标矩形区域的宽度,按逻辑单位。
hHeghtdest:指向目标矩形区域高度的句柄,按逻辑单位。
hdcSrc:指向源设备环境的句柄。
nXOriginSrc:指定源矩形区域左上角的X轴坐标,按逻辑单位。
nYOriginSrc:指定源矩形区域左上角的Y轴坐标,按逻辑单位。
nWidthSrc:指定源矩形区域的宽度,按逻辑单位。
nHeightSrc:指定源矩形区域的高度,按逻辑单位。
blendFunction:指定用于源位图和目标位图使用的alpha混合功能,用于整个源位图的全局alpha值和格式信息。源和目标混合功能当前只限为AC_SRC_OVER。
返回值:如果函数执行成功,那么返回值为TRUE;如果函数执行失败,那么返回值为FALSE。
Windows NT:若想获取更多错误信息,请调用GetLastError函数。
备注:如果源矩形区域与目标矩形区域大小不一样,那么将缩放源位图与目标矩形区域匹配。如果使用SetStretchBltMode函数,那么iStretchMode的值是BLACKONWHITE和WHITEONBLACK,在本函数中,iStretchMode的值自动转换成COLORONCOLOR。目标坐标使用为目标设备环境当前指定的转换方式进行转换。源坐标则使用为源设备环境指定的当前转换方式进行转换。如果源设备环境标识为增强型图元文件设备环境,那么会出错(并且该函数返回FALSE)。如果目标和源位图的色彩格式不同,那么AlphaBlend将源位图转换以匹配目标位图。
AlphaBlend不支持镜像。如果源或目标区域的宽度或高度为负数,那么调用将失败。
注意添加 #pragma comment(lib,"Msimg32.lib")库
下面是一个例子:
- #include <windows.h>
- #pragma comment(lib,"Msimg32.lib")
- HINSTANCE g_hIns;
- HWND g_hWnd;
- LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
- int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow)
- {
- g_hIns=hInstance;
- static TCHAR szAppName[]=TEXT("HelloWin");
- HWND hWnd;
- MSG msg;
- WNDCLASS wndClass;
- wndClass.style=CS_HREDRAW|CS_VREDRAW;
- wndClass.lpfnWndProc=WndProc;
- wndClass.cbClsExtra=0;
- wndClass.cbWndExtra=0;
- wndClass.hInstance=hInstance;
- wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
- wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
- wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
- wndClass.lpszMenuName=NULL;
- wndClass.lpszClassName=szAppName;
- if(!RegisterClass(&wndClass))
- {
- MessageBox(NULL,TEXT("error"),szAppName,MB_ICONERROR|MB_OK);
- return 0;
- }
- hWnd=CreateWindow(szAppName,TEXT("The hello program"),WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
- int iReturn;
- //也可以放在此
- ShowWindow(hWnd,iCmdShow);
- UpdateWindow(hWnd);
- while(GetMessage(&msg,hWnd,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return msg.wParam;
- }
- LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
- {
- static HDC hdc;
- static HDC hBitmapDC;
- static HBITMAP hBitmap;
- static int w=50;
- static int h=50;
- static BLENDFUNCTION bf;
- PAINTSTRUCT ps;
- switch (message)
- {
- case WM_PAINT :
- hdc=BeginPaint(hWnd,&ps);
- hBitmapDC = CreateCompatibleDC(hdc);
- hBitmap = CreateCompatibleBitmap(hdc,w,h);
- SelectObject(hBitmapDC,hBitmap);
- SetTextColor(hBitmapDC,RGB(0,255,0));
- TextOut(hBitmapDC,0,0,TEXT("asdf"),4);
- bf.BlendOp = AC_SRC_OVER;
- bf.BlendFlags = 0;
- bf.AlphaFormat = 0;
- bf.SourceConstantAlpha = 50;
- AlphaBlend(hdc,0,0,w,h,hBitmapDC,0,0,w,h,bf);
- EndPaint (hWnd, &ps) ;
- break;
- case WM_DESTROY :
- PostQuitMessage (0) ;
- break ;
- default:
- return DefWindowProc (hWnd, message, wParam, lParam) ;
- }
- return 1;
- }
半透明AlphaBlend 实现界面或某块资源的半透明相关推荐
- 基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]
基于PyQt5的图形化界面开发--Windows内存资源监视助手[附带编译exe教程] 0. 前言 1. 资源信息获取函数--monitor.py 2. UI界面--listen.py 3. main ...
- ue4 html ui,UE4用户UI界面核心框架完整资源
UE4用户UI界面核心框架完整资源. 1.0版本发布日期:2019年11月21日 当前产品版本:1.1 当前版本发布日期:2020年1月2日 RPG用户界面套件提供了用户界面.蓝图.演员交互代码.道具 ...
- 半透明AlphaBlend
AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图. 函数原型: BOOL AlphaBlend( HDC hdcDest, // handle to destination DCi ...
- android 在线设计工具,21个免费的UI界面设计工具、资源及网站
我们刚刚介绍了移动设计初探:触屏网页设计.本文将介绍一些UI界面与设计使用的元素.软件和网站.内容很丰富,适合用户体验设计师.界面设计师.产品设计师.JS前段开发.手机产品设计以及iPad和平板电脑产 ...
- 21个免费的UI界面设计工具、资源及网站
转自:http://www.oschina.net/news/16527/21-free-ui-tools-resources-websites 来自51CTO的文章,本文将介绍一些UI界面与设计使用 ...
- Python实战之小说下载神器(完结)今天教你如何白拿一款代码版资源丰富的小说下载器GUI界面编程,海量资源免费看~(追书必备神器)
前言 这次的是一个系列内容 给大家讲解一下何一步一步实现一个完整的实战项目案例系列之 小说下载神器(完结)(GUI界面化程序) 小说的搜索功能.小说下载器的GUI界面 爱看小伙伴想要一款资源丰富,好用 ...
- 免费的21个UI界面设计工具、资源及网站
转自: http://www.php100.com/html/webkaifa/javascript/2011/0322/7748.html 本文将介绍一些UI界面与设计使用的元素.软件和网站.内容很 ...
- 获取程序代码块资源消耗
// 在这里写一些可能消耗内存的代码,例如,如果想了解创建一个GcMultiRow软件需要多少内存可以执行以下代码 long start = GC.GetTotalMemory(true); var ...
- python 添加半透明水印_如何利用python给图片添加半透明水印
前言 本文主要给大家介绍了关于python图片添加半透明水印的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 示例代码: # coding:utf-8 from PIL im ...
最新文章
- 第一篇学术演讲准备两个月,去了谷歌却做不了深度学习,听Facebook田渊栋谈人生挑战与选择...
- 浅谈Laravel中的设计模式(四) Contract 契约模式
- MATLAB从入门到精通-MATLAB2021版类似excel的坐标轴标签自动缩放布局
- basic中next转为c语言,[转载]混乱c语言代码写的basic解释器
- uestc 851 方老师与素数
- Effective_STL 学习笔记(四) 用 empty 来代替检查 size() 是否为0
- ubuntu安装最新版blender方法
- 中传入字符串_JavaScript字符串转数字有什么方法
- 2.5. 标准路由器:Zend_Controller_Router_Rewrite
- ad gerber文件生成_Gerber竟然可以倒转PCB文件!!!
- 电商系统之商品类目及商品属性史
- Xshell 5 注册码
- BMC指定4路NCSI网口中的一路
- JQAjax读页面里面的方法
- Registry Workshop —— 强大的注册表编辑工具
- #2766. 猜测(guess)
- 苏格拉底的爱情与婚姻观
- differentiable rendering可微分渲染
- 多模态 跨模态|人机交互新突破!
- 如何防御黑客的社工?
热门文章
- Pinyin Comparison 拼音辨别 V1.3
- python查询实时天气预报_微信公众号+python+新浪SAE实现实时天气预报功能
- 推荐一个win7镜像(支持uefi,已升级补丁,带驱动)
- matlab表示函数波形,MATLAB绘制典型型号波形
- 微信订阅号 主体类型选择 解惑
- PetFinder.my - Pawpularity Contest
- 热力学的核心概念——能量熵
- 计算机性能安全性,第一章 计算机安全与性能 — 计算机性能评价
- 电视上的腾讯会员和手机上的一样吗
- 《多媒体信息技术》复习思考题