MFC函数之BitBlt

// Cgame123View 绘制
 
void Cgame123View::OnDraw(CDC* pDC)
{
	Cgame123Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	if (!pDoc)
		return;
 
	// TODO:  在此处为本机数据添加绘制代码
	CRect Rect;
	 GetClientRect(&Rect);
	//屏幕宽度
	width = Rect.right - Rect.left;
	//屏幕高度
	height = Rect.bottom - Rect.top;
 
	CDC Dc;
	if (Dc.CreateCompatibleDC(pDC) == FALSE)
		MessageBox(_T("Can't create DC"));
	//在不同位置显示位图
	Dc.SelectObject(backmap);
	//显示两张位图使它们连接
	pDC->BitBlt((width - 800) / 2, 0, 800, height, &Dc, 0, goup - 2000, SRCCOPY);
	pDC->BitBlt((width - 800) / 2, 0, 800, height, &Dc, 0, goup, SRCCOPY);
 
 
	//显示位图
	CDC dccompatible;
	if (dccompatible.CreateCompatibleDC(pDC) == FALSE)
		MessageBox(_T("Can't create DC"));
	dccompatible.SelectObject(plane);
 
	//第一二个参数为位置开始出(左上角),第三四个参数为设备的高宽,第六七个参数为切
	pDC->BitBlt(10, -45, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 0, SRCCOPY);
	pDC->BitBlt(10, height-20, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 0, SRCCOPY);
	pDC->BitBlt(10, 200, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, -10, 0, SRCCOPY);
	pDC->BitBlt(10, 250, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 10, 0, SRCCOPY);
	pDC->BitBlt(10, 300, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 0, SRCCOPY);
 
	pDC->BitBlt(10, 350, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, -10, SRCCOPY);
	pDC->BitBlt(10, 400, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 10, SRCCOPY);
	pDC->BitBlt(10, 450, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 0, SRCCOPY);
 
 
	//正切上,负切下,下上高度为height
	pDC->BitBlt(80, 0, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 20, SRCCOPY);
	pDC->BitBlt(140, 0, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, -20, SRCCOPY);
 
 
	//正切上,负切下,下上高度为height,又一架完整的飞机
	pDC->BitBlt(200, 50, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, 20, SRCCOPY);
	pDC->BitBlt(200, 0, m_bm.bmWidth, m_bm.bmHeight, &dccompatible, 0, -30, SRCCOPY);
 
 
	CClientDC dc(this);
}
 
 
 
 
BitBlt
 
设备上下文绘图有很多种方法。例如通过创建位图画刷,利用其填充一个区域来实现图像的绘制。此外,还可以使用CDC类的位图函数来输出位图到设备上下文中。
 
BitBlt 用于从原设备中复制位图到目标设备,语法格式如下:
 
BOOLBitBlt(int x,int y,int nWidth,int nHeight,CDC*pSrcDC,int xSrc,int ySrc,DWORDdwRop);
 
x:目标矩形区域的左上角x轴坐标点。
 
y:目标矩形区域的左上角y轴坐标点。
 
nWidth:在目标设备中绘制位图的宽度。
 
nHight:在目标设备中绘制位图的高度。
 
pSrcDC:源设备上下文对象指针。
 
xSrc:源设备上下文的起点x轴坐标,函数从该起点复制位图到目标设备。
 
ySrc:源设备上下文的起点y轴坐标,函数从该起点复制位图到目标设备。
 
dwRop:光栅操作代码
dwRop有如下选择:
 
BLACKNESS           使用黑色填充目标区域
 
DSTINVERT              目标矩阵区域颜色取反
 
MERGECOPY            使用与运算组合原设备矩形区域的颜色和目标设备的画刷
 
MERGEPAINT           使用或运算将反向的源矩形区域的颜色和目标矩形区域的颜色合并
 
NOTSRCCOPY          复制源设备区域的反色到目标设备中
 
NOTSRCERASE        使用或运算组合源设备区域与目标设备区域的颜色,然后对结果颜色取反
 
PATCOPY                  复制源设备当前选中的画刷到目标设备
 
PATINVERT               使用异或运算组合目标设备选中的画刷和目标设备区域的颜色
 
PATPAINT                 通过或运算组合目标区域当前选中的画刷和源设备区域反转的颜色
 
SRCAND                   使用与运算组合源设备和目标设备区域的颜色
 
SRCCOPY                 直接复制源设备区域到目标设备中
 
SRCERASE               使用与运算组合目标设备区域的反色与源设备区域的颜色
 
SRCINVERT              使用异或运算组合源设备区域颜色和目标设备区域颜色
 
SRCPAINT                 使用或运算组合源设备区域颜色和目标设备区域颜色
 
WHITENESS             使用白色填充目标区域

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值