仿苹果的苹果手机界面图标标框

当前位置: →
→ 仿苹果工具栏 完美解决图标毛边黑边
仿苹果工具栏 完美解决图标毛边黑边
& 作者及来源: 互联网 &
&收藏到→_→:
摘要: 仿苹果工具栏 完美解决图标毛边(黑边)
"仿苹果工具栏 完美解决图标毛边黑边"::
预览:工程下载&&&&& 这个是clayui界面库的一个最新的示例,是参照objectdock做的,主要的动态效果都比较完美的实现了,使用 也一样,直接将桌面上的图标拖进去就可以了。&&&&& 先来说说图标毛边的问题吧,这个可能部分同学比较感兴趣。&&&&& 当使用gdiplus::bitmap::fromhicon载入一个图标对象时,gdiplus会丢失掉图标的alpha信息,导致绘制时出现毛边(黑边),我个人觉得这应该是一个bug,下面给出 &&&&&
虽然gdiplus::bitmap::fromhicon有问题,但是gdiplus::bitmap::fromhbitmap却可以正常工作,不会
丢失alpha信息,那么可以先使用geticoninfo得到图标的iconinfo,在iconinfo这个结构里包含有
hbmcolor,hbmmask这2个hbitmap对象,hbmcolor其实就是图标的图象了,hbmmask是遮罩,得到了这2个
hbitmap,那么就可以根据图标的绘制原理自己加上alpha信息了,具体代码如下:
&& && & iconinfo icinfo = { 0 };&& &&& &if (!::geticoninfo(hicon, &icinfo))&& &&& &&& &&& &&& & && &&& &getobject(icinfo.hbmcolor, sizeof(bitmap), &bitmap);&& &&& &&& &&& &getobject(icinfo.hbmmask, sizeof(bitmap), &bmmask);&& && & //得到遮罩的图象缓存&& &&& &byte* maskbits = new byte[bmmask.bmwidthbytes * bmmask.bmheight];&& &&& &::getbitmapbits(icinfo.hbmmask, bmmask.bmwidthbytes * bmmask.bmheight, maskbits);&& && & //先从hbmcolor创建出bitmap对象
&& && & gdiplus::bitmap *picon = bitmap::fromhbitmap(icinfo.hbmcolor, null);&& &&& &&& &&& &rect rect(0,0,picon-&getwidth(),picon-&getheight());&& && & //得到bitmap的图像缓存,这样就可以根据遮罩来自己加入alpha信息了&& &&& &picon-&lockbits(&rect, imagelockmoderead, picon-&getpixelformat(), &bmpdata);&& &&& &byte* temp = (bmpdata.stride&0)?((byte*)bmpdata.scan0):((byte*)bmpdata.scan0+bmpdata.stride*(bmpdata.height-1));&& &&& &&& &&& &int stride = abs(bmpdata.stride);
&& && & //根据遮罩的图象此文来自: 马开东博客
转载请注明出处 网址:
缓存来还原图标原本的alpha信息
&& && & for ( int i = 0; i & bmpdata. i++)&& &&& &{&& &&& &&& &byte* bits = temp + i *&& &&& &&& &&& &&& &&& &unsigned char* maskbits = maskbits + (bmpdata.height - 1 - i) * bmmask.&& &&& &&& &int bitoffset = 0;&& &&& &&& &for ( int j = 0; j & bmpdata. j++ )&& &&& &&& &{&& &&& &&& &&& &unsigned char alpha = ( (*maskbits && bitoffset ++) & 0x80 )?0:255;&& &&& &&& &&& &if(alpha)&& &&& &&& &&& &{&& &&& &&& &&& &&& &if(!bits[j * 4 + 3])&& &&& &&& &&& &&& &&& &bits[j * 4 + 3] =&& &&& &&& &&& &}&& &&& &&& &&& &else&& &&& &&& &&& &&& &bits[j * 4 + 3] = 0;&& &&& &&& &&& &if& ( ! (bitoffset % 8)& )&& &&& &&& &&& &{&& &&& &&& &&& &&& &bitoffset -= 8;&& &&& &&& &&& &&& &maskbits++;&& &&& &&& &&& &}&& &&& &&& &}&& &&& &}&& && & delete []&&& &&& picon-&unlockbits(&bmpdata);
&& &&&& 最后这个picon就是含有alpha信息的图标图象了。&&&&&&& 然后是动态效果,这个大家看工程里的代码吧,主要的实现方面的也就200多行,都在ciconframe里,我简单说一下要点吧:&&&&&&& 1. 在ciconframe::onmm里,根据鼠标与窗口的间距计算窗口的大小,这个也就是窗口随着鼠标 而改变大小的核心所在了&&&&&&& 2. 在ciconframe::update里,按照从左到右方式排列窗口,这样做窗口就会紧紧的靠在一起了搜索此文相关文章: 栏 完美解决图标毛边黑边此文来自: 马开东博客
网址: 站长QQ
仿苹果工具栏 完美解决图标毛边黑边_苹果ios相关文章
苹果ios_总排行榜
苹果ios_最新
苹果ios_月排行榜
苹果ios_周排行榜
苹果ios_日排行榜仿苹果图标设计
我图网提供精品流行仿苹果图标设计素材下载,作品模板源文件可以编辑替换,设计作品简介: 仿苹果图标设计,模式:CMYK格式高清大图,使用软件为软件: Illustrator (.AI)
【本作品下载内容为:"仿苹果图标设计"模板,其他内容仅为参考。】
【声明】未经权利人许可,任何人不得随意使用本网站的原创作品(含预览图),否则将按照我国著作权法的相关规定被要求承担最高达50万元人民币的赔偿责任。
猜你喜欢:
仿苹果图标设计
如果举报经核实属实,可获得最高3个我图币的奖励
审核通过后,系统会直接将我图币发放到您的账户。
目前奖励范围只包含以下三个原因:
盗版/重复的作品:
指该作品与站内已有作品相同或相似度较高。举报
该作品需提供相似作品的链接。
违反法律法规的作品:
指该作品含有国家或政府颁发的证件或含有***、淫秽、赌博、贩毒、暴力、凶杀、反动、泄漏国家秘密、危害国家安全等违法不良信息的作品。
侵犯版权的作品:
指该作品含有他人已注册版权内容的作品,如含有迪斯尼,喜洋洋等已注册版权内容的作品。
欢迎您参与举报,与我们一起维护网站作品的纯净!
重复/盗版的作品
违反法律法规的作品
侵犯版权的作品
请提供原作品链接(必填)
专注正版设计作品交易平台
我图网为1900万位老板,设计师,白领,老师,
行政后勤,管理人员等提高工作效率
在线***:免费***:400-600-8526

参考资料

 

随机推荐