MFC学习笔记——关于图片加载

来源:互联网 发布:ipad下不了软件 编辑:程序博客网 时间:2024/04/28 11:43

花了一点时间跟着做MFC棋牌类的游戏,也算是重头开始学。

关于图片的加载,主要是对CBitmap的构建,而根据网上的一些总结和经验,大概有两种方式。

1、把图片资源固化到程序中的方法

这个方法主要是在资源中进行添加,得到图片的ID,从而直接使用

bitmap.LoadBitmap(IDB_BITMAPID);

2、与程序相互独立的方式

主要是将图片已路径加载的方式添加到程序中,这个方法目前我只学生成HBitmap,并转换成CBitmap,先做这个笔记吧。

HBITMAP hBitmap=(HBITMAP)LoadImage(0,_T("res\\girl.bmp"),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//转换
bitmap.Attach(hBitmap);


在图片控件中显示

((CStatic *)GetDlgItem(IDC_PIC))->SetBitmap(HBITMAP(bitmap[m_CurrentCommodityIndex]));  //IDC_PIC 为图片控件ID


在窗口中显示,例如单文档的窗口背景修改

void CGobangView::OnDraw(CDC* pDC){CDC BEGIN;BEGIN.CreateCompatibleDC(pDC);BEGIN.SelectObject(bitmap);pDC->BitBlt(0,0,580,625,&BEGIN,0,0,SRCCOPY);}


3、在制作五子棋的过程中,在棋盘上直接贴图会发生和背景图重叠的现象。对此,可以用一个相同大小的纯黑贴图先做一个反色的操作

pDC->BitBlt(73+30*x-14,86+30*y-14,27,28, &Mask, 0,0,MERGEPAINT);pDC->BitBlt(73+30*x-14,86+30*y-14,27,28, &BlackChess, 0,0,SRCAND);

这里主要介绍的是MERGEPAINT关键字,该关键字表示将图形反色后同贴图区进行OR操作。

SRCAND则是将图形与贴图区直接AND操作。

因为在计算机中,纯白的RGB为(255,255,255),纯黑的RGB为(0,0,0)。

因此,任何颜色同纯白OR操作,显示的为白色。任何颜色与纯黑操作,显示为当前颜色。

而AND操作则相反,任何颜色同纯白AND操作,显示为当前颜色。任何颜色与纯黑操作,显示为黑色。




0 0
原创粉丝点击