请问在wince中如何实现半透明对话框??

探索者   2010-5-13 17:56 楼主
麻烦说得稍微具体点,或者给个链接之类的。。

回复评论 (10)

截图自己做 alpha处理,再画出来。。
点赞  2010-5-13 18:15
winCE默认不支持透明,所以画图的时候得自己画
点赞  2010-5-13 20:14
CE是不支持的,没有简单的方法

可以考虑使用overlay
点赞  2010-5-13 20:28
帮你顶
点赞  2010-5-13 23:08
帮顶,同问。。
点赞  2010-5-14 08:25
只能使用图层混合迭加,自己处理
点赞  2010-5-14 09:20
6.0的支持
点赞  2010-5-14 16:39
可以通过在Pramery Surface层中设置alpa和KeyColor的值,来实现overlay Surface层的透明度,这个Wince6.0是支持的,就知道这么多了……
点赞  2010-5-14 23:40
自己用 图层叠加 处理吧。
MARK.
点赞  2010-5-15 00:00
最近在搞WINCE,用GDI写了个半透明,其实原理就上边的大大所说,图层叠加就行了
取底图,去关键色,半透明

  1. //绘缓冲区DC,把shdc半透明贴到dhdc上
  2. void DrawCache2(HDC dhdc,RECT rect1,HDC shdc,RECT rect2)
  3. {

  4.         //底图片
  5.         HDC backhdc = CreateCompatibleDC (dhdc) ;
  6.         HBITMAP hbitback = CreateCompatibleBitmap(dhdc,rect1.right - rect1.left,rect1.bottom - rect1.top);
  7.         HGDIOBJ hbojtemp = SelectObject (backhdc,hbitback);

  8.         //取底片
  9.         BitBlt(
  10.                 backhdc,
  11.                 0,
  12.                 0,
  13.                 rect1.right - rect1.left,
  14.                 rect1.bottom - rect1.top,
  15.                 dhdc,
  16.                 rect1.left,
  17.                 rect1.top,
  18.                 SRCCOPY);

  19.         //去关键色
  20.         TransparentBlt(backhdc,
  21.                 0,
  22.                 0,
  23.                 rect1.right - rect1.left,
  24.                 rect1.bottom - rect1.top,
  25.                 shdc,
  26.                 rect2.left,
  27.                 rect2.top,
  28.                 rect2.right - rect2.left,
  29.                 rect2.bottom - rect2.top,
  30.                 0);


  31.         //*
  32.         //半透明
  33.         BLENDFUNCTION bf;
  34.         bf.BlendOp   =   AC_SRC_OVER;        //目前只有这个
  35.         bf.BlendFlags   =   0;               //保留位,目前只有这个
  36.         bf.AlphaFormat   =   AC_SRC_OVER;    //这个参数是指定加载自带Alpha通道
  37.         bf.SourceConstantAlpha   =   127;    //如果上面用了自带通道,那这个值就没意义
  38.         AlphaBlend(dhdc,
  39.                 rect1.left,
  40.                 rect1.top,
  41.                 rect1.right - rect1.left,
  42.                 rect1.bottom - rect1.top,
  43.                 backhdc,
  44.                 0,
  45.                 0,
  46.                 rect1.right - rect1.left,
  47.                 rect1.bottom - rect1.top,
  48.                 bf);
  49.         //*/
  50.         SelectObject(backhdc,hbojtemp);   
  51.         DeleteDC(backhdc);
  52.         DeleteObject(hbitback);
  53. }
点赞  2010-5-15 11:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复