目前位置: VCer资源中心 >>> VCer代码 >>> Windows界面

[本帖已阅读2113次 分值90 回复2次] 张贴资源 发回信箱 控制面板

绘制桌面精灵

提供者:ISeekYou 张贴时间:2004-05-13 14:55:04.0 出处:vcer.net 作者:不祥

绘制桌面精灵(2004-05-13 14:55:04.0)


那时


 
级别: VCer排长
头衔: VCer会员

经验: 751
作品: 15
分会: 华中分会
注册: 2004-02-09 19:39:54.0
登录: 2008-05-14 10:14:29.0

如此临时创建的区域,由于计算需要很多的时间,所以使得有点闪烁。改进的方法有:

1、利用屏蔽位图进行处理,可以加快时间

2、如果精灵动作不是特别多,图片不是特别大的情况下,直接将所有创建的区域保存下来,不用每次都来创建和删除,这样将快很多,但是也消耗更多的内存。

// 关键在于如何创建一个随意形状的窗口

准备一张带有透明色背景(就是背景都是一个颜色,呵呵)的bmp图片  

创建与位图兼容的dc。然后创建一个空区域

hr=CreateRectRgn(0,0,0,0);

   for (i=0;i <  图片宽度-2;i++)

  {   

        for(j = 0;j< 图片高度-2;j++)

{

     用dc得到图片i,j处的象素pixel

     if( pexel !=透明色)

{

temp=CreateRectRgn(i,j,i+1,j+1);

     CombineRgn(hr,hr,temp,RGN_OR);

      DeleteObject(temp);

 }

 // 最后用SetWindowRgn函数将窗口形状设置成上面创建的区域的形状

 SetWindowRgn(handle,hr,true);

     DeleteObject(hr);

ps:如果有与位图相对应的屏蔽位图,用他们进行光栅操作更方便

通过在定时器中将窗口设成不同的形状,一般为一连串动作的精灵,就可以得到桌面精灵了,瑞星的狮子,office 的助手等等差不多是这样绘制的(不确定)。

 

注:转载文章需注明来源:VCer.net 文章地址:http://vcer.net/2135.html

  如果你觉得VCer.net不错,而且你愿意为VCer.net捐赠一元钱,那么点击后面的捐赠按钮吧:) vcer.net捐赠

[回复该贴] [加入个人书签]
[投票结果]

A: 评分 10 100% (1 票)
B: 评分 5 0% (0 票)
C: 评分 0 0% (0 票)
D: 评分 -5 0% (0 票)
E: 评分 -10 0% (0 票)

 


re:绘制桌面精灵

you daima ma?

pluto026 于 2008-04-28 10:19:24.0 编辑 [回复该贴]

re:绘制桌面精灵
作者可以给一个范例代码吗?那样更形象的说

zzhe79 于 2004-05-14 19:37:06.0 编辑 [回复该贴]