转: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")库

下面是一个例子:

  1. #include <windows.h>
  2. #pragma   comment(lib,"Msimg32.lib")
  3. HINSTANCE g_hIns;
  4. HWND g_hWnd;
  5. LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
  6. int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow)
  7. {
  8. g_hIns=hInstance;
  9. static TCHAR szAppName[]=TEXT("HelloWin");
  10. HWND hWnd;
  11. MSG msg;
  12. WNDCLASS wndClass;
  13. wndClass.style=CS_HREDRAW|CS_VREDRAW;
  14. wndClass.lpfnWndProc=WndProc;
  15. wndClass.cbClsExtra=0;
  16. wndClass.cbWndExtra=0;
  17. wndClass.hInstance=hInstance;
  18. wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  19. wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
  20. wndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
  21. wndClass.lpszMenuName=NULL;
  22. wndClass.lpszClassName=szAppName;
  23. if(!RegisterClass(&wndClass))
  24. {
  25. MessageBox(NULL,TEXT("error"),szAppName,MB_ICONERROR|MB_OK);
  26. return 0;
  27. }
  28. hWnd=CreateWindow(szAppName,TEXT("The hello program"),WS_OVERLAPPEDWINDOW,
  29. CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,hInstance,NULL);
  30. int iReturn;
  31. //也可以放在此
  32. ShowWindow(hWnd,iCmdShow);
  33. UpdateWindow(hWnd);
  34. while(GetMessage(&msg,hWnd,0,0))
  35. {
  36. TranslateMessage(&msg);
  37. DispatchMessage(&msg);
  38. }
  39. return msg.wParam;
  40. }
  41. LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
  42. {
  43. static HDC hdc;
  44. static HDC hBitmapDC;
  45. static HBITMAP hBitmap;
  46. static int w=50;
  47. static int h=50;
  48. static BLENDFUNCTION bf;
  49. PAINTSTRUCT ps;
  50. switch (message)
  51. {
  52. case   WM_PAINT :
  53. hdc=BeginPaint(hWnd,&ps);
  54. hBitmapDC = CreateCompatibleDC(hdc);
  55. hBitmap = CreateCompatibleBitmap(hdc,w,h);
  56. SelectObject(hBitmapDC,hBitmap);
  57. SetTextColor(hBitmapDC,RGB(0,255,0));
  58. TextOut(hBitmapDC,0,0,TEXT("asdf"),4);
  59. bf.BlendOp = AC_SRC_OVER;
  60. bf.BlendFlags = 0;
  61. bf.AlphaFormat = 0;
  62. bf.SourceConstantAlpha = 50;
  63. AlphaBlend(hdc,0,0,w,h,hBitmapDC,0,0,w,h,bf);
  64. EndPaint (hWnd, &ps) ;
  65. break;
  66. case WM_DESTROY :
  67. PostQuitMessage (0) ;
  68. break ;
  69. default:
  70. return DefWindowProc (hWnd, message, wParam, lParam) ;
  71. }
  72. return 1;
  73. }

半透明AlphaBlend 实现界面或某块资源的半透明相关推荐

  1. 基于PyQt5的图形化界面开发——Windows内存资源监视助手[附带编译exe教程]

    基于PyQt5的图形化界面开发--Windows内存资源监视助手[附带编译exe教程] 0. 前言 1. 资源信息获取函数--monitor.py 2. UI界面--listen.py 3. main ...

  2. ue4 html ui,UE4用户UI界面核心框架完整资源

    UE4用户UI界面核心框架完整资源. 1.0版本发布日期:2019年11月21日 当前产品版本:1.1 当前版本发布日期:2020年1月2日 RPG用户界面套件提供了用户界面.蓝图.演员交互代码.道具 ...

  3. 半透明AlphaBlend

    AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图. 函数原型: BOOL AlphaBlend( HDC hdcDest, // handle to destination DCi ...

  4. android 在线设计工具,21个免费的UI界面设计工具、资源及网站

    我们刚刚介绍了移动设计初探:触屏网页设计.本文将介绍一些UI界面与设计使用的元素.软件和网站.内容很丰富,适合用户体验设计师.界面设计师.产品设计师.JS前段开发.手机产品设计以及iPad和平板电脑产 ...

  5. 21个免费的UI界面设计工具、资源及网站

    转自:http://www.oschina.net/news/16527/21-free-ui-tools-resources-websites 来自51CTO的文章,本文将介绍一些UI界面与设计使用 ...

  6. Python实战之小说下载神器(完结)今天教你如何白拿一款代码版资源丰富的小说下载器GUI界面编程,海量资源免费看~(追书必备神器)

    前言 这次的是一个系列内容 给大家讲解一下何一步一步实现一个完整的实战项目案例系列之 小说下载神器(完结)(GUI界面化程序) 小说的搜索功能.小说下载器的GUI界面 爱看小伙伴想要一款资源丰富,好用 ...

  7. 免费的21个UI界面设计工具、资源及网站

    转自: http://www.php100.com/html/webkaifa/javascript/2011/0322/7748.html 本文将介绍一些UI界面与设计使用的元素.软件和网站.内容很 ...

  8. 获取程序代码块资源消耗

    // 在这里写一些可能消耗内存的代码,例如,如果想了解创建一个GcMultiRow软件需要多少内存可以执行以下代码 long start = GC.GetTotalMemory(true); var ...

  9. python 添加半透明水印_如何利用python给图片添加半透明水印

    前言 本文主要给大家介绍了关于python图片添加半透明水印的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 示例代码: # coding:utf-8 from PIL im ...

最新文章

  1. 第一篇学术演讲准备两个月,去了谷歌却做不了深度学习,听Facebook田渊栋谈人生挑战与选择...
  2. 浅谈Laravel中的设计模式(四) Contract 契约模式
  3. MATLAB从入门到精通-MATLAB2021版类似excel的坐标轴标签自动缩放布局
  4. basic中next转为c语言,[转载]混乱c语言代码写的basic解释器
  5. uestc 851 方老师与素数
  6. Effective_STL 学习笔记(四) 用 empty 来代替检查 size() 是否为0
  7. ubuntu安装最新版blender方法
  8. 中传入字符串_JavaScript字符串转数字有什么方法
  9. 2.5. 标准路由器:Zend_Controller_Router_Rewrite
  10. ad gerber文件生成_Gerber竟然可以倒转PCB文件!!!
  11. 电商系统之商品类目及商品属性史
  12. Xshell 5 注册码
  13. BMC指定4路NCSI网口中的一路
  14. JQAjax读页面里面的方法
  15. Registry Workshop —— 强大的注册表编辑工具
  16. #2766. 猜测(guess)
  17. 苏格拉底的爱情与婚姻观
  18. differentiable rendering可微分渲染
  19. 多模态 跨模态|人机交互新突破!
  20. 如何防御黑客的社工?

热门文章

  1. Pinyin Comparison 拼音辨别 V1.3
  2. python查询实时天气预报_微信公众号+python+新浪SAE实现实时天气预报功能
  3. 推荐一个win7镜像(支持uefi,已升级补丁,带驱动)
  4. matlab表示函数波形,MATLAB绘制典型型号波形
  5. 微信订阅号 主体类型选择 解惑
  6. PetFinder.my - Pawpularity Contest
  7. 热力学的核心概念——能量熵
  8. 计算机性能安全性,第一章 计算机安全与性能 — 计算机性能评价
  9. 电视上的腾讯会员和手机上的一样吗
  10. 《多媒体信息技术》复习思考题