MFC图片操作

Posted yongkang-guo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC图片操作相关的知识,希望对你有一定的参考价值。

根据MFC要操作图片的来源,可分为以下两类:

  一、非动态显示图片(即图片先通过资源管理器载入,有一个固定ID)

  二、动态载入图片(即只需要在程序中指定图片的路径即可载入)

 


 

一、非动态显示图片

  1.传送位图函数

 

    CDC memDC;
    memDC.CreateCompatibleDC(pDC);

    CBitmap NewBitmap, * pOldBitmap;
    NewBitmap.LoadBitmap(IDB_BITMAP1);//从资源中导入位图
    BITMAP bmpInfo;//声明BITMAP结构体
    NewBitmap.GetBitmap(&bmpInfo);//获取位图信息
    pOldBitmap = memDC.SelectObject(&NewBitmap);//将位图选入内存DC

    pDC->BitBlt(0, 0, 0, 0, &memDC, 0, 0, SRCCOPY);//将内存DC中的位图复制到设备DC

 

  2.创建位图画刷

   CBitmap NewBitmap;
   NewBitmap.LoadBitmap(IDB_BITMAP1);
   CBrush NewBrush, *pOldBrush;    NewBrush.CreatePatternBrush(&NewBitmap);    pOldBrush = pDC->SelectObject(&NewBrush);
   pDC->FillRect(CRect(0,0, nScrHalfWidth * 2, nScrHalfHeight * 2), &NewBrush);
   pDC->SelectObject(pOldBrush);

 


 

二、动态载入图片

  1.CImage

    CImage 支持的图片格式有很多,像通常用的jpg,png,bmp,gif等。

   HDC hDC;
   hDC = pDC->GetSafeHdc();
   CImage img;
   img.Load(L"res/texture.bmp");
   img.Draw(hDC, 0, 0, 100, 100);

  


 

补充:

 

  GDI(图形设备接口(Graphics Device Interface)) 主要任务是负责系统与绘图程序之间的信息交换。在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI。GDI的出现使程序员无需要关心硬件设备及设备正常驱动,就可以将应用程序的输出转化为硬件设备上的输出和构成,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。 

  GDI绘图工具的基类,一般不能直接使用。其中CBitmap、CBrush、CFont、CPalette、CPen、CRgn等。

  在使用GDI对象进行绘图时,需要遵循一下步骤:

   (1)绘图开始前,创建一个新的GDI对象,并选入当前设备上下文,同时保存原GDI对象指针。

   (2)使用新GDI对象绘图。

   (3)绘图结束后,使用已保存的原GDI对象指针将设备上下文回复原状。

 

  希望本文章能够帮助到您。如果文章中有错误或不足之处,希望您可以在评论区纠正,方便大家交流学习。

 

 

 

[1]孔令德. 计算机图形学基础教程.清华大学出版社,2008.

 

 

以上是关于MFC图片操作的主要内容,如果未能解决你的问题,请参考以下文章

MFC 我在几个图片控件显示了图片,如何获取这几个图片的资源编号?

我将 png 加载到 mfc 静态图片控件的代码有啥问题?

VC/MFC 如何让一张图片文件放大缩小呢。比如图片的分辨率是1024*768的,然后将它成了分辨率改为300*300

mfc 图片列表显示

MFC图片自适应

C++ 代码片段(积累)