MFC如何把一张图片显示在一个单文档内??

MFC如何把一张图片显示在一个单文档内??,第1张

能载入bmp格式的图像

、你用VC++建立一个MFC(exe)工程,命名为“My”,在d出的“MFC应用程序向导-步骤1”

中选“单文档”,然后点“完成”->“确定”。

2、在“MyView.h”文件中找到代码“CMyDoc*

GetDocument()”在其下方添加如下代码:

LPBITMAPINFO

bmi

LPBYTE

pBits

BOOL

Read(char*

s)

3、然后打开“MyView.cpp”文件,在最下面写如下代码:

BOOL

CMyView::Read(char*

s)

{

CFile

file

BITMAPFILEHEADER

bmfh

//打开文件

if(!file.Open(s,CFile::modeRead))

{

AfxMessageBox("File

cannot

open!")

return

FALSE

}

//读文件信息头

file.Read(

(LPVOID)&bmfh,

sizeof(bmfh)

)

if(bmfh.bfType

!=

0x4d42)

{

AfxMessageBox("This

is

not

a

bmp

file!")

return

FALSE

}

//读位图信息头

int

infoSize

=

bmfh.bfOffBits

-

sizeof(bmfh)

bmi

=

(LPBITMAPINFO)new

BYTE[infoSize]

file.Read(

(LPVOID)bmi,

infoSize)

if(bmi->bmiHeader.biBitCount!=1

&&

bmi->bmiHeader.biBitCount!=4

&&

bmi->bmiHeader.biBitCount!=8

&&

bmi->bmiHeader.biBitCount!=24)

{

AfxMessageBox("The

number

of

colors

is

not

valid!")

return

FALSE

}

//读图像数据

pBits

=

new

BYTE[bmi->bmiHeader.biSizeImage]

file.Read(

(LPVOID)pBits,

bmi->bmiHeader.biSizeImage)

return

TRUE

}

往上找,找到构造函数:CMyView::CMyView()

在其中添加代码:

Read("d:\\picture\\图片.bmp")

往下找,找到OnDraw函数,在该函数的第三行添加代码:

if(bmi

&&

pBits)

{

::StretchDIBits(pDC->GetSafeHdc(),0,0,bmi->bmiHeader.biWidth,bmi->bmiHeader.biHeight,0,0,bmi->bmiHeader.biWidth,bmi->bmiHeader.biHeight,pBits,bmi,DIB_RGB_COLORS,SRCCOPY)

}

MFC中有一个功能很强大的类CImage,建议你使用这个类,首先#inculde<altimage.h>

CImage image//定义一个CImage类的对象 这里对象名字是image

image.Load("文件地址")//在load函数中加入文件的地址

CDC *pDC = this->GetDC() //获得当前设备上下文 通俗讲就是画布 也就是你看到的屏幕

image.Draw(pDC->m_hDC,CPoint(0,0))//记得把CPoint(0,0)换成你想要的位置哦

//还有一种画法image.Draw(pDC->m_hDC,CRect(x1,y1,x2,y2))就是把图片画到矩形里 可以伸缩的


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11876126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存