关于使用Picture控件显示图像的问题

south2000 2005-09-06 02:29:49
我做了一个基于对话框的程序,上面方了两个Picture控件,名字为IDC_BMP,DC_LINE,一个用来显示一个从硬盘里面读出的bmp(256色灰度)图像,另一个用来画线条。
我会用DC_LINE来画线条,但不会用IDC_BMP来显示图像。

我是这么做的:
在对话框的OnPaint()里面:
CWnd *pWnd1=NULL, *pWnd2=NULL;
CDC *pDC1=NULL, *pDC2=NULL;

CGdiObject *pPenOld=NULL;

CPen PenBlue;
PenBlue.CreatePen(PS_SOLID,1,RGB(0,0,255));// 蓝色画笔
pWnd1=GetDlgItem(IDC_LINE);
pDC1=pWnd1->GetDC();
pDC1->Rectangle(0,0,330,330);

pDC1->SelectObject(&PenBlue);
pDC1->MoveTo(10,10);
pDC1->LineTo(10,280);// 垂直轴
pDC1->LineTo(320,280);// 水平轴
...像这样,我可以画出需要的线条
pDC1->SelectObject(pPenOld);// 恢复以前的画笔
ReleaseDC(pDC1);


我想用IDC_BMP来显示从硬盘里面读取的bmp图像,该如何做?


////////////////////////////////////////
我知道还有一种利用双缓存来画的,就是做一个CDC memDC;
所有的画线都在memDC中,最后把menDC复制到DC_LINE的DC中去,这种方法我只会用来画线,
不会用双缓存的方法来显示图像,呵呵。


我要实现的是硬盘中的bmp图像,比如我选择一副图像,就让它在Picture空间IDC_BMP中显示。

换句话说,使用双缓存画的时候
CBitmap bitmap;
CDC dc;
dc.SelectObject(&bitmap);
如何动态更新bitmap里面的像素?

谢谢大家!

...全文
218 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
south2000 2005-09-08
  • 打赏
  • 举报
回复
这个问题没有人会么?
south2000 2005-09-07
  • 打赏
  • 举报
回复
当然,位图数据流的宽高事先是知道的,呵呵。
south2000 2005-09-07
  • 打赏
  • 举报
回复
首先,谢谢大家!

我发现我的表达不是很清楚。

现在,我给出进一步的信息,请大家帮助。
情况是这样的

PC机与一个仪器相连接,隔一段时间,仪器就会传过来一个8位灰度bmp位图的数据流(没有bmp的信息头,仅仅是像素的数据流,)。我想把这个数据流在Picture控件上画出来,所以我提出了上面的问题。

请大家帮助,谢谢!
dirdirdir3 2005-09-06
  • 打赏
  • 举报
回复
使用OleLoadPicture也可以用来装载bmp,同时也可以显示jpg。
femalelover 2005-09-06
  • 打赏
  • 举报
回复
其实这个问题不用写代码的.
source->insert->Bitmap->import.选入一张位图.其默认ID为IDB_BITMAP*
选中你的控件,右键,选属性,在BORDER里选BITMAP.在下面一栏有你想要的ID_BITMAP*,选中它
则你的问题就解决了.
jjiaming 2005-09-06
  • 打赏
  • 举报
回复
用LoadImage可以用硬盘加载bmp文件
HBITMAP bitmap=(HBITMAP)LoadImage(AfxGetApp()->m_hInstance,
m_strplayerpic,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
m_strplayerpic是你的图片的路径
得到bmp句柄后,你就可以在picture控件上显示了
((CStatic*)GetDlgItem(IDC_BMP))->SetBitmap(bitmap);
手头没有MSDN,可能有笔误,勿怪

16,472

社区成员

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

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

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