问了很多次,都没有得到满意的答案,不知道错在哪了
要求在picture控件中显示bmp图像,
C...view::initiupdate()
CWnd* pWnd=GetDlgItem(IDC_PIC);//图像控件IDC_PIC
dc=pWnd->GetDC();
CHopeDoc *Doc=GetDocument();
CBitmap *pBitmap=new CBitmap;
pBitmap->Attach(Doc->hBmp);
memDc.CreateCompatibleDC(dc);
memDc.SelectObject(pBitmap);
C...view::OnPaint()
{cclient dc(this)
dc.BitBlt(0,0,800,800,&memDC,SRCCOPY)
}
就是显示不出图像,不知道是错在哪了
问题点数:0、回复次数:4Top
1 楼water_mark(水印)回复于 2005-06-02 11:55:37 得分 0
在c..doc::opendocument()
已得得到图像的句柄
HBITMAP hbmpTop
2 楼cdeee(亦难)回复于 2005-06-02 13:37:40 得分 0
问题在这里:memDc.CreateCompatibleDC(dc);
改为:memDc.CreateCompatibleDC(NULL);
Top
3 楼psbeond(LibUIDK界面库客服)回复于 2005-06-03 12:46:33 得分 0
memDc.CreateCompatibleDC(dc);
用的dc是dc=pWnd->GetDC();
而不是cclient dc(this)
另外你再看看每步操作是否成功,Doc->hBmp是否为空;
再说picture显示图片也不是这么显示的呀.只接在picture控件的属性中选择就行了
Top
4 楼cdeee(亦难)回复于 2005-06-03 14:16:48 得分 0
问题在这里:memDc.CreateCompatibleDC(dc);
因该改为:memDc.CreateCompatibleDC(NULL);
说明:
因为图象文件拥有自己的调色板等信息,而这些信息是与系统无关的,使用memDc.CreateCompatibleDC(NULL);可以使memDc使用图象文件建立设备上下文,并使其与当前系统匹配(即建立映射关系),而如果你使用memDc.CreateCompatibleDC(dc);则因为已经建立了一个与系统相关的设备上下文,而这个上下文因为与系统相关,就会与图象文件中存储的信息发生冲突,因此再使用memDc.SelectObject(pBitmap);的时候无法加载图象文件,所以你在绘制位图的时候就无法绘制图象了。
Top




