您的位置:首页 > 其它

MFC---多种方式显示位图

2016-08-09 20:08 337 查看
一、控件方式

1、将要显示的位图b.bmp放在res文件夹下

2、右键工程,选择“Insert”,选择Bitmap,这时工程中新添了Bitmap文件夹

3、右键Bitmap文件夹,选择“Import Bitmap”,选择b.bmp,这时Bitmap文件夹下新建了IDB_BITMAP1

4、在对话框中拖入一个Picture控件,右键选择“属性”,类型(Type)选择Bitmap,图像(Image)选择IDB_BITMAP1



二、在程序中载入位图

void CMyMessageDlg::OnPaint()
{
if (IsIconic())
{
... ...
}
else
{
CPaintDC dc(this);   //显示设备
CBitmap bitmap;
CBitmap *pOldBitmap;
CDC memDC;
memDC.CreateCompatibleDC(&dc);   //建立设备场景,与显示设备兼容
bitmap.LoadBitmap(IDB_BITMAP1);  //取出位图资源
pOldBitmap = memDC.SelectObject(&bitmap);  //将位图选入内存环境
dc.BitBlt(50, 50, 100, 100, &memDC, 0, 0, SRCCOPY);  //显示
memDC.SelectObject(pOldBitmap);

CDialog::OnPaint();
}


三、在程序中绘制位图

void CPaintDlg::OnPaint()
{
if (IsIconic())
{
... ...
}
else
{
CPaintDC dc(this);   //显示设备
CBitmap bitmap;
CBitmap *pOldBitmap;
CDC memDC;
CPen pen;
CPen *oldpen;
memDC.CreateCompatibleDC(&dc);  //建立设备场景,与显示设备兼容
bitmap.CreateCompatibleBitmap(&dc, 100, 100);  //建立位图,长、宽均为100,与显示设备兼容
pOldBitmap = memDC.SelectObject(&bitmap);  //将位图选入内存场景
for(int i=0; i<100; i++) //画100根线
{
pen.CreatePen(PS_SOLID, 1, RGB(0, 0, i*2+55));
oldpen = memDC.SelectObject(&pen);
memDC.MoveTo(0, i);
memDC.LineTo(100, i);
memDC.SelectObject(oldpen);
pen.DeleteObject();
}
dc.BitBlt(50, 50, 100, 100, &memDC, 0, 0, SRCCOPY);  //显示
memDC.SelectObject(pOldBitmap);

CDialog::OnPaint();
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: