现在的位置: 首页 > 综合 > 正文

在WinCE下绘制半透的效果要注意的问题

2013年11月03日 ⁄ 综合 ⁄ 共 996字 ⁄ 字号 评论关闭

  

Windows XP 中实现半透明效果并不是件难事,仅仅只需要调SetLayeredWindowAttributes函数即可。如果同样的效果也想在Windows CE 中重现呢?因为Windows CE没有SetLayeredWindowAttributes 函数,不过在Windows CE 5.0开始支持AlphaBlend,该函数的作用是将两个HDC根据一定的比例混合,即有了类似半透明的效果。

知道了有这个函数,我们现在就应该来看看这个函数怎么用。查阅MSDN,该函数定义为:

BOOL AlphaBlend(

  HDC           hdcDest,// 指向目标设备环境的句柄

  int           nXOriginDest,// 指定目目标矩形区域左上角的X轴坐标

  int           nYOriginDest,// 指定目标矩形区域左上角的Y轴坐标

  int           nWidthDest,// 指定目标矩形区域的宽度

  int           nHeightDest,// 指向目标矩形区域高度的句柄

  HDC           hdcSrc, //指向源设备环境的句柄

  int           nXOriginSrc,// 指定源矩形区域左上角的X轴坐标

  int           nYOriginSrc,// 指定源矩形区域左上角的Y轴坐标

  int           nWidthSrc,// 指定源矩形区域的宽度

  int           nHeightSrc,// 指定源矩形区域的高度

  BLENDFUNCTION blendFunction //指定用于源位图和目标位图使用的alpha混合功能

);

要能想正常的使用这个函数还必须做一件事件将Windows.hCoredll.lib加载到你的工程里去。

 

    做好了这些事情钱准备了,可以编译你工程的了。幸运的话能够顺利通过编写,不幸的话将出现下列提示错误:

    error C3861: 'AlphaBlend': identifier not found”函数没有定义,是不是很奇怪我们明明把头文件和Library都包含到我们的工程里怎么会没有定义呢?是不是很纳闷?

    不要郁闷,那不是你的工程的问题而是系统的问题!在定制WINCE系统DE 时候有一个选项需要注意:如下图:

如果你想用AlphaBlend来绘制透明效果就必须将这一项选上。

抱歉!评论已关闭.