设为首页 加入收藏

TOP

绘制16*16的图标
2014-11-23 20:26:40 】 浏览:474
Tags:绘制 图标

今天想画一个16*16的图标,图标文件已在资源中创建,只有16*16有图,默认的32*32为空白。不过自己还是按照习惯,LoadIcon载入图标,然后DrawIcon绘制图标,结果什么也没有显示。

搜索LoadIcon函数的说明,发现这个函数只能处理32*32的图标,也就是只对符合SM_CXICON和SM_CYICON的规定大小的图标才有效。而且告知该函数已经被LoadImage替代。

好吧,那就用LoadImage来处理吧,把LoadImage函数中的图标宽度和高度参数都设置为16,完成图标句柄的生成,然后用DrawIcon绘图,结果发现图标变的好大,肯定不是16*16啊,郁闷。

继续查找DrawIcon函数的用法,晕啊,这个函数也只能绘制符合SM_CXICON和SM_CYICON规定大小的图标,如果你载入的图标不是这个尺寸,它就自动进行放缩了。现在我知道了,实际DrawIcon函数把我16*16的图标画成32*32的了。

哦,原来,想自己指定大小,还必须用DrawIconEx函数,这个函数中可以指定大小的。可又发现,CDC类居然没有封装这个函数,不得不用SDK的函数来处理了,DrawIconEx(dc.m_hDC,pt.x,pt.y,hIcon,16,16,0,NULL,DI_NORMAL);终于搞定。

附上最终的代码,因为网上我并没有找到完整的代码,或许是别人都会了吧。不过也许还有人和我一样还不会呢?

HICON hIcon = (HICON)::LoadImage(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_CLOSE),IMAGE_ICON, 16,16,0);

CDC *pDC = GetDC();

CPoint pt(10,10);

DrawIconEx(pDC->m_hDC,pt.x,pt.y,hIcon,16,16,0,NULL,DI_NORMAL);
ReleaseDC(pDC);
DeleteObject(hIcon);


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇CTaskDialog 的用法 例子 Visual .. 下一篇88行代码实现俄罗斯方块游戏(含..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目