我程序的作用使在试图窗口显示一副位图:部分代码如下:
class CFontDemoView : public CView
{
protected: // create from serialization only
CBitmap m_Bitmap;
// Operations
public:
Display(CDC *pdc,CBitmap *pbitmap,int x,int y);
}
/////////////////////////////////////////////////
// CFontDemoView message handlers
CFontDemoView :: Display(CDC *pdc,CBitmap *pbitmap,int x,int y)
{
BITMAP BM;
CDC MemDC;
MemDC.CreateCompatibleDC (NULL);
MemDC.SelectObject (pbitmap);
pbitmap->GetObject (sizeof(BM),&BM);
pdc->BitBlt (x,y,BM.bmWidth ,BM.bmHeight ,&MemDC,0,0,SRCCOPY);}
/////----------------------------------------------------
void CFontDemoView::OnDraw(CDC* pDC)
{
CFontDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFontDemoView ::Display (pDC,&m_Bitmap,300,100);
}
问题:
运行后在我得视图窗口显示的却不是一副真彩色的图片,而是想照片的底片一样的,(不是黑白色)。请问什么原因?
class CFontDemoView : public CView
{
protected: // create from serialization only
CBitmap m_Bitmap;
// Operations
public:
Display(CDC *pdc,CBitmap *pbitmap,int x,int y);
}
/////////////////////////////////////////////////
// CFontDemoView message handlers
CFontDemoView :: Display(CDC *pdc,CBitmap *pbitmap,int x,int y)
{
BITMAP BM;
CDC MemDC;
MemDC.CreateCompatibleDC (NULL);
MemDC.SelectObject (pbitmap);
pbitmap->GetObject (sizeof(BM),&BM);
pdc->BitBlt (x,y,BM.bmWidth ,BM.bmHeight ,&MemDC,0,0,SRCCOPY);}
/////----------------------------------------------------
void CFontDemoView::OnDraw(CDC* pDC)
{
CFontDemoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CFontDemoView ::Display (pDC,&m_Bitmap,300,100);
}
问题:
运行后在我得视图窗口显示的却不是一副真彩色的图片,而是想照片的底片一样的,(不是黑白色)。请问什么原因?
解决方案 »
- VC++界面美化
- 软件开发项目,从立项、定义、需求分析、概要设计、详细设计、编码实现、测试等,大家认为各开发阶段应该优先选用哪些配套的易用、优秀的开发工具。并且通过对优秀的开发工具的合理评价和交流,方便我们广大开发者。
- 不同程序间发消息,出现问题
- 怎样在单文档界面下添加标尺?
- 这个错误该如何解决?急问
- 如何将char 类型转换为 unsigned char 类型
- 怎么样实现文件查找中带 *.mp3
- 怎样制作木马数据库?急
- 有关性能监视器的问题,菜鸟妹妹求助!
- 关于哈夫曼树编码与译码的实现
- 反回一个LPDISPATCH的指针 *pv,其值指向一个数据集,请问再如何取出数据集的数据
- 如何使ListView的report风格出现如同表格那样的线
{
// TODO: add construction code here m_Bitmap.LoadBitmap(IDB_BITMAP2);
}
CFontDemoView :: Display(CDC *pdc,CBitmap *pbitmap,int x,int y)
{
BITMAP BM;
CDC MemDC;
MemDC.CreateCompatibleDC ( pdc );//NULL);
CBitmap* pOldBM = MemDC.SelectObject (pbitmap);
pbitmap->GetObject (sizeof(BM),&BM);
pdc->BitBlt (x,y,BM.bmWidth ,BM.bmHeight ,&MemDC,0,0,SRCCOPY);
MemDC.SelectObject ( pOldBM );
}
{
memDC.CreateCompatibleDC(pDC);//注意这里是pDC
}
CWrapBitmap* pWrapBitmap=pDoc->GetWrapBitmap();
if(!pWrapBitmap->GetpBitmap())
return;
memDC.SelectObject(pWrapBitmap->GetpBitmap());
pDC->BitBlt(0,0,pWrapBitmap->GetWidth(),pWrapBitmap->GetHeight(),&memDC,0,0,SRCCOPY);
//MemDC.CreateCompatibleDC (NULL);
MemDC.CreateCompatibleDC (&dc);