关于ImageList的问题,画不出来!

fireseed 2005-05-11 06:04:57
位图是24位的24X24

// 创建了一个支持真彩色的CImageList,带mask
CImageList ilHot;
ilHot.Create( 24, 24, ILC_COLOR24 | ILC_MASK, nImgCount, 1 );
// 创建了一个位图对象
CBitmap *bmp = new CBitmap;
bmp->LoadBitmap( IDB_BMP01 );
// 测试位图是否读取正确
HDC dc = CreateCompatibleDC( ::GetDC(NULL) );
SelectObject( dc, bmp->GetSafeHandle() );
BitBlt( ::GetDC(NULL), 0, 0, 24, 24, dc, 0, 0, SRCCOPY );
// 这里已经画出来了,说明位图读取的没问题
// 将位图加到pList里
ilHot.Add( bmp, RGB(255, 0, 255) );
// 再把程序默认的图标加到ImageList里
ilHot.Add( ::LoadIcon( ::AfxGetInstanceHandle(), MAKEINTRESOURCE( IDR_MAINFRAME ) ) );
// 测试ImageList的Draw
CDC testdc;
testdc.Attach( ::GetDC( NULL ) );
ilHot.Draw( &testdc, 0, CPoint(0, 0), ILD_TRANSPARENT );// 画不出来
ilHot.Draw( &testdc, 1, CPoint(0, 0), ILD_TRANSPARENT );// 可以画出来


为什么位图画不出来,图标可以画出来呀?????
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fireseed 2005-05-12
  • 打赏
  • 举报
回复
to krh2001:

谢谢,我的例子是随手写的,只为了说明问题

原来是没有将位图取消绑定第一个dc,都是测试惹的祸!

问题解决了,给分!
jerry 2005-05-11
  • 打赏
  • 举报
回复
在Add 之前 ,应该将位图从 DC里选出来,否则不能对它进行操作:

// 创建了一个位图对象
CBitmap bmp; // 不用 new 你没有 delete 会内存漏
bmp.LoadBitmap( IDB_BMP01 );
// 测试位图是否读取正确
HDC dc = CreateCompatibleDC( ::GetDC(NULL) );
HGDIOBJ oh = SelectObject( dc, bmp.GetSafeHandle());
BitBlt( ::GetDC(NULL), 0, 0, 24, 24, dc, 0, 0, SRCCOPY );
// 这里已经画出来了,说明位图读取的没问题
SelectObject(::GetDC(NULL), oh);
// 将位图加到pList里
ilHot.Add( bmp, RGB(255, 0, 255) );


--------------------------------
其它问题:

1) new 出来的 CBitmap 没有 delete 掉
2) 不要图方便,总是GetDC(NULL), 每个Get出来的 DC 都要 Release

HDC screenDC = GetDC(NULL);
..... // 操作该DC


ReleaseDC(NULL, screenDC);


3) MFC 和 GDI 混合在一起. 楼主这段代码, 让人头痛.建议:要么都 MFC. 要么都 GDI

4) testdc.Attach( ::GetDC( NULL ) ); Attach的 句柄要Detach 出来

fireseed 2005-05-11
  • 打赏
  • 举报
回复
to oyljerry:

可是那个地方我已经画出来了,不是CreateCompatibleDC的问题。问题是最后两行代码
xqk 2005-05-11
  • 打赏
  • 举报
回复
up
oyljerry 2005-05-11
  • 打赏
  • 举报
回复
CreateCompatibleDC创建的就是一个内容是黑白的DC
要select一个彩色的bitmap之后才会变成彩色的

http://expert.csdn.net/Expert/topic/2369/2369056.xml?temp=.7972528
zengwujun 2005-05-11
  • 打赏
  • 举报
回复
不知道,想知道,所以up
fireseed 2005-05-11
  • 打赏
  • 举报
回复
位图画出来是黑的

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧