MFC基础--怎样贴一张圆型的位图

(二)MFC学习之 环境:win10+vs2017+mfc 涉及到的内容: 1,位图的加载 CBitmap * m_Bitmap=new CBitmap; m_BitMAP->m_hObject=LoadImage(NULL,"**.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 2,位图的运算 CClientDc dc(this); dc.BitBlt(dc.... 阅读详情

MFC基础--怎样贴一张圆型的位图

 


如果你要做有关棋类的东东
又恰好有两张漂亮棋子的位图,
可惜两张位图是方型的,后面
有背景..在Delphi里只要将
背景色设成透明就行了,可在
MFC里怎样实现把背景去掉只
显示圆形的棋子呢?

实例如下:
//To invoke this function with the position

BOOL IsBlack = TRUE;//set the black stone defautly
CBitMap m_bStoneB;
CBitMap m_bStoneW;
//load bmp from resource
m_bStoneB.LoadBitmap(IDB_BLACKSTONE);
m_bStoneW.LoadBitmap(IDB_WHITESTONE);

void CxxDlg::OnPutStone(CPoint point)
{
CDC *pDC = GetDC(); //Get Device Context
CBitmap *pOldBitmap;
CBrush *pOldBrush;
CPen *pOldPen;

if(pDC == NULL)
return;

CDC dcimage;
if (!dcimage.CreateCompatibleDC(pDC)) //Create MemDC
return;

CRect rect; //Get the rectangle of stone;
rect.left = point.x - 25/3;
rect.right = point.x + 25/3;
rect.top = point.y - 25/3;
rect.bottom = point.y + 25/3;

if(IsBlack) //judge whether stone is black
{
//Select blackstone in memory and select out oldbitmap
pOldBitmap = dcimage.SelectObject(&m_bStoneB);
CBrush br(RGB(0, 0, 0)); //set brush to black
CPen pen(PS_SOLID,1,RGB(0, 0, 0));//set pen to black
pOldPen=pDC->SelectObject(&pen);//select in pen(black)
//and out oldpen

pOldBrush = pDC->SelectObject(&br);//select in brush(black)
pDC->Ellipse(&rect);//draw a ellipse in defined rectangle
BITMAP bm;
m_bStoneB.GetBitmap(&bm);//Get blackstone bitmap info

//paint memory bitmap(blackstone) with the operator OR
pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),
&dcimage,0,0,bm.
mWidth,bm.bmHeight,SRCPAINT);
}
else //the same to draw whitestone bitmap
{
//select in whitestone and select out blackstone
pOldBitmap = dcimage.SelectObject(&m_bStoneW);
CBrush br(RGB(255, 255, 255)); //set white brush
CPen pen(PS_SOLID,1,RGB(255, 255, 255));//set white pen
pOldPen=pDC->SelectObject(&pen);
pOldBrush = pDC->SelectObject(&br);
pDC->Ellipse(&rect);
BITMAP bm;
m_bStoneW.GetBitmap(&bm);
//paint memory bitmap(whitestone) with the operator AND
pDC->StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),

&dcimage,0,0,bm.
mWidth,bm.bmHeight,SRCAND);
}

dcimage.SelectObject(pOldBitmap); //select old bitmap
pDC->SelectObject(pOldPen);//select old pen
pDC->SelectObject(pOldBrush);//select old brush

IsBlack = !IsBlack; //switch to white or black
ReleaseDC(pDC);//relieve GDI resource(important)
}

}

 
MFC位图操作 SDK方法  /************************************************************************A:首先载入位图 1:通过资源载入LoadBitmap 2:通过文件载入LoadImageB:创建内存画布C:内存画布与位图进行绑定D:利用BitBlt显示位图 阅读详情

相关推荐

MFC中加载位图资源到窗口中

一、 从磁盘中加载位图到窗口中---操作步骤 1. 创建一个单文档的应用程序,工程名为LoadBmp。 2. 在视图类中添加一个成员变量m_hBmp. 3. 在视图类的构造函数中调用LoadImage方法从磁盘中加载文件。 CLoadBmpView::CLoadBmpView() { // TODO: add construction code here m_hBmp=(HBITM

ziyuzhao123的专栏 9283

VC MFC MVC球体绘图程序源码.rar

VC MFC MVC球体绘图程序源码,多任务模式的VC 绘图程序实例,在以往的模式中,大家一般都采用 Input-Processing-Output 的单任务模式,但是现在在Windows的编程中,MVC模更适合图形界面的设计,它将数据处理和数据显示分离开,使维护,扩展系统更加灵活。

MFC基础知识(三)——用DIB位图显示图像

本文主要介绍:DIB位图的一些基础知识和在MFC中如何利用DIB位图显示图像。 一、DIB位图结构及注意点: 1.DIB结构: 一个完整的DIB由两部分组成:一个BITMAPINFO结构和一个存储像素阵列的数组: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQ

hong__fang的专栏 5547

MFC重绘Button为形。

MFC中重绘Button为形Button,可以修改背景颜色、文本颜色、边框颜色等。

【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL、glfw、glut)第一期

文章目录1、计算公式2、代码实现3、运行结果后记 1、计算公式 球的三维坐标表示为: x2+y2+z2=0 x^2 + y^2 + z^2 = 0 x2+y2+z2=0 引入球的参数坐标方程进行离散化。以(u,v)表示球面上某一点的坐标,且u,v的取值范围为[0 , 1],定义(u,v)到(x,y,z)的转换如下: {x=sin(π×v)cos(2π×u)y=sin(π×v)sin(2π×u)z=cos(π×v) \begin{cases} x=sin(\pi×v)cos(2\pi×u) \\ y

爱看书的小沐 1万+

6.MFC:GDI绘图(1)

GDI:我们很容易清楚,图形设备接口(Graphics Device Interface),就跟API一样。它不只是在windows应用程序的界面开发中被使用,就连windows本身也是使用GDI来实现的。窗口的标题栏,客户区以及按钮和列表等等都是由GDI绘制的,我们之前学习的控件都是经过了加工之后的成品,方便我们使用。如果想要把自己心中的控件和窗口画出来就要学会这门GDI。现如今,每个应用程序的...

计算机视觉 445

Linux文件对比实战:diff命令参数与vimdiff交互详解

文件对比是Linux日常运维与开发中最高频的操作之一,而diff与vimdiff正是应对这一场景的两大核心工具。diff以标准化文本输出为设计目标,适合脚本自动化处理,凭借退出码0、1、2即可快速判断文件是否一致;vimdiff则通过终端内的多窗口布局和快捷键操作,为人工审查提供了直观的交互体验。从diff -u的统一格式到diff -rq的批量目录扫描,再到空白差异的忽略策略,这些参数组合能有效提升排查效率。进一步地,vimdiff的差异跳转、拉取推送以及折叠控制,让合并冲突处理变得轻松可控,配合git

ciya3282的博客 208

MFC基础--怎样一张位图 (转)

MFC基础--怎样一张位图 (转)[@more@] MFC基础--怎样一张位图 如果你要做有关棋类的东东 又恰好有两张漂亮棋子的位图, 可惜两张位图是方的,后面 有背景..在Delphi里只要将 背景色...

csd3176的博客 130

vc/MFC 画直线 画填充

直线 vc/MFC,自己编写的小程序 欢迎下载。

MFC实现自绘界面图美化

由绿林工作室(Greenwood)倾情奉献,学习界面美化的中高级MFC程序学习者必看,内附源码、详细注释、演示程序和详细的说明文档。的确是好东西,力荐!

MFC自定义|位置|半径|边界和内部颜色|填充图案

MFC:可以自定义形的位置,的半径,的边界颜色,的内部颜色以及内部填充图案

MFC加载位图资源的实现

MFC加载位图资源的实现 1、添加OnEraseBkgnd函数 该方法是在指定位置加载位图 BOOL CbitmapDlg::OnEraseBkgnd(CDC* pDC) {     // TODO: 在此添加消息处理程序代码和/或调用默认值     CBitmap bitmap;     bitmap.LoadBitmap(IDB_BITMAP2);

life061522的专栏 5338

MFC基于对话框的位图加载

最近学VC++,遂写了简单的应用如文章标题,其实这个应用很常见。          步骤1. 位图加载。通过位图的导入添加自己的位图,注意要是bmp格式。          步骤2.创建一个Combo框,用于选择图片内容          步骤3. 在onpaint()函数中将位图填充所选特定的区域                   当然这里只是实现基本功能:适合初学者。若有高手看有不

踏实的做好自己 8846

MFC之学习位图操作

1.笔记 1.1位图的概念 位图是一种将显示器的图像数据不经过压缩而直接按位存储的文件格式,位图主要分为设备相关位图(device dependent bitmap,DDB),设备无关位图(device independent bitmap,DIB)。其中DIB以扩展名bmp留在文件中,DDB也称为GDI位图,是一种MFC内部位图格式,由BITMAP结构体描述。 显然导入MFC工程的DIB位图会转化为DDB位图,转存到BITMAP结构体。 1.2位图操作函数 1.2.1创建与指定设备上下文兼容的内

星辰大海的博客 2919

MFC位图按钮

<br />首先,我们创建一个基于对话框的应用程序CmyDialog ; <br /> Ι.MFC的CBitmapButton类,这也是最简单的功能最强的位图按钮。我们可以采取如下的步骤: <br /> 需定义CBitmapButton 对象与CButton一一对应. <br /><br /> 1. 在创建按钮资源IDC_BUTTON时选择 owner draw (自己画); <br /> 2. 在对话框.h文件内定义位图按钮对象 CBitma

backbin的专栏 4531

MFC图形函数学习12——位图操作函数

位图即后缀为bmp的图形文件,MFC中有专门的函数处理这种格式的图形文件。这些函数只能处理作为MFC资源的bmp图,没有操作文件的功能,受限较多,一般常作为程序窗口界面图片、显示背景图片等用途。有关位图操作的步骤、相关函数等介绍如下。

m0_72128260的博客 1443

VC/MFC位图保存的实现方法

MFC位图操作,经常要涉及到关于位图的保存

清风留影的专栏 5855
上一篇: BCB使用小技巧(1)
下一篇: 用VC++建立Service服务应用程序
Y___Y
博客等级 码龄20年 63粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值