MFC中显示内存中的位图到对话框的程序为何出错?

//只截取了绘制图象部分的程序,自己感觉出现问题的地方已标出//大家帮忙看看这个显示内存中的位图到对话框的程序为什么没有颜色!voidCMyDlg::OnPaint(){... //只截取了绘制图象部分的程序,自己感觉出现问题的地方已标出
//大家帮忙看看这个显示内存中的位图到对话框的程序为什么没有颜色!
void CMyDlg::OnPaint()
{
CDialog::OnPaint();
short int *pRGB={0}; //定义颜色矩阵
CWnd *pWnd=GetDlgItem(IDC_STATIC);
CDC *pDC=pWnd->GetDC(),hDC;
bitmap.CreateBitmap (512, 512, 0, 16, pRGB); //创建位图,问题 1
pWnd->Invalidate();
pWnd->UpdateWindow();
CDC dcmemory;
dcmemory.CreateCompatibleDC(pDC);
dcmemory.SelectObject(&bitmap);
for (int ii = 0; ii <100; ii++) //找一小块区域赋给颜色值
{
for (int jj = 0; jj<100; jj++)
{
dcmemory.SetPixel(ii,jj,RGB(120,120,120)); //问题 2
}
}

pDC->BitBlt(300, 0, 512, 512, &dcmemory, 0, 0, SRCCOPY); //在屏幕上显示512*512的bmp图片
dcmemory.DeleteDC();
}

//为什么在问题 1 处,第三、四个参数无论怎么设置,图片都是黑白的,或者有时候就根本不显示图片?
//我希望图片由一定灰度,不能纯黑纯白,可是问题2处好像无论如何小块区域内的颜色不是纯黑就是纯白!
展开
 我来答
wawoo2007
2008-03-07 · TA获得超过626个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:650万
展开全部
你的颜色矩阵pRGB这样定义是不行的,没有分配空间的指针送给函数去处理天知道它会给你什么(或许又发现一个Exploit^_^),你需要按照创建位图的实际数据空间大小给它分配内存,或者直接用NULL。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蔡文碧
2008-03-07 · TA获得超过249个赞
知道小有建树答主
回答量:528
采纳率:0%
帮助的人:412万
展开全部
式试CreateCompatibleBitmap?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友23add4a
2008-03-07 · TA获得超过1038个赞
知道小有建树答主
回答量:595
采纳率:0%
帮助的人:886万
展开全部
参数3含义不清楚,要显示彩色图的话就要设成1
图片不显示可能跟你的显示器的显示模式有关系,如果显示器的色深为32bits的话,显示16bits的位图就有问题,你可以把参数4设成32
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式