• 2004-04-24

    皮肤技术研究 - [C++Builder技术文档]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://jiamingsoft.yourblog.org/logs/157999.html

    做播放器的话,嘿嘿,当然离不开皮肤技术了。。。 [face01]实现皮肤技术有很多种方法,最简单的就是用第三方控件或者皮肤类,但别人的东西终究还是别人的东西,要不就是收费,要不就是有很多限制,所以,好东西呢,还是自己造比较好。。[face07] 自己实现皮肤的话,首先要解决的就是不规则窗体的问题,因为皮肤界面千变万化,所以窗体是必须要适应皮肤变化的,这个实现起来比较容易,用几个API函数就可以实现了 分别是: CreateRect() //当然还有别的API函数,用来创建多边形等,这个是创建矩形区域的 RgnCombineRgn() //区域运算用的,主要是把不需要的区域删除,留下需要的界面 SetWindowRgn() //用来重新设置窗体区域 比如:现在要根据当前Image里的图片创建不规则窗体 int x,y; HRGN WndRgn,TempRgn; WndRgn=CreateRectRgn(0,0,Image1->Width,Image1->Height); for(x=0;x<Width;x++) for(y=0;y<Height;y++) if(Image1->Canvas->Pixels[x][y]==clBlack) { TempRgn=CreateRectRgn(x,y,x+1,y+1); 创建需要删除的区域,以象素为单位 CombineRgn(WndRgn,WndRgn,TempRgn,RGN_XOR); 剔除不必要的区域 DeleteObject(TempRgn); } SetWindowRgn(Handle,WndRgn,true); 就这么简单。。。 至于按钮之类的,原理和这个都一样,不过要先创建一个所以图片,用来确定按钮在界面中的位置

    收藏到:Del.icio.us




发表评论

您将收到博主的回复邮件
记住我