关于不规则窗体实现的一个问题? 我想做一个像Windows下的播放器9。0版本那样的不规则界面,我在处理不规则的区域时是通过对图像进行逐点扫描再通过对区域的合并和异或来得到窗体的不规则区域的。但在计算不规则区域时由于是逐点扫描图像的所以非常慢。特别是在改变大小时总是非常慢,请问有什么解决的办法?正规的MFC处理不规则窗体时是如何实现的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般都是根据一幅图来生成窗口的网上例子多呢http://www.vckbase.com/document/finddoc.asp?keyword=%B2%BB%B9%E6%D4%F2 用位图来计算,那是为了实现比较复杂形状窗口的。如果是准备像Windows下的播放器那种窗体,应该使用几个标准的几何形状区域加起来,这样的速度就会快得多的。 楼上的兄台.....不是吧,用几何形状不可能吧。。真不明白Windows下的播放器那种窗体是怎么实现的最重要的一点是在改变大小的时侯,速度并不慢呀。.... 我用以下几行代码便产生了一个和WMP9差不多的窗体:CRgn rgn,rgn1;rgn.CreateRoundRectRgn(0,7,345,285,27,27);rgn1.CreateRoundRectRgn(12,250,245,344,45,40);rgn.CombineRgn(&rgn,&rgn1,RGN_OR);rgn1.DeleteObject();rgn1.CreateRoundRectRgn(108,0,345,327,20,20);rgn.CombineRgn(&rgn,&rgn1,RGN_OR);SetWindowRgn(rgn,true);构造了几个椭圆区域,组合一下。如果窗体不太复杂,个人觉得用这种方法简单。 1、计算型状慢,你可以自己写一个算法直接从bmp文件读取绝对要快。2、windows那个播放器的型状是由几部分构成的,改变大小的时候只有规则部分在改动。这个时候你不要重新计算大小,而直接把你的区域的情况改变一下就行了 请问如何用VS2010建立.NET FAMEWORK 2的MFC应用程序? SQL SERVER 2000中数据 在2005中使用 dll中使用COM出现莫名其妙的问题 如何逐行读取文本文件CFile(不能用CStdioFile )急急急 得到本机ip问题的求助 如何通过编程共享远程机器的某个目录 如何自己编写函数库? 电源管理生效时系统发出的消息有哪些? 如何用图片重画slider控件,用图片代替,不是换颜色啊!! 請教一個vs2008的問題 請mfc高手來解答下 如何在自己的程序中显示Explorer中的右键菜单? 关于listctrl的问题
网上例子多呢
http://www.vckbase.com/document/finddoc.asp?keyword=%B2%BB%B9%E6%D4%F2
如果是准备像Windows下的播放器那种窗体,应该使用几个标准的几何形状区域加起来,这样的速度就会快得多的。
CRgn rgn,rgn1;
rgn.CreateRoundRectRgn(0,7,345,285,27,27);
rgn1.CreateRoundRectRgn(12,250,245,344,45,40);
rgn.CombineRgn(&rgn,&rgn1,RGN_OR);
rgn1.DeleteObject();
rgn1.CreateRoundRectRgn(108,0,345,327,20,20);
rgn.CombineRgn(&rgn,&rgn1,RGN_OR);
SetWindowRgn(rgn,true);
构造了几个椭圆区域,组合一下。
如果窗体不太复杂,个人觉得用这种方法简单。
2、windows那个播放器的型状是由几部分构成的,改变大小的时候只有规则部分在改动。
这个时候你不要重新计算大小,而直接把你的区域的情况改变一下就行了