www.pudn.com > Movement_VC.rar > Brick.cpp


///////////////////////////////////////////////////////////////////////////////// 
//	 
// Brick.cpp: implementation of the CBrick class. 
// 
//////////////////////////////////////////////////////////////////////////////// 
// 版权所有(2002) 
// Copyright(2002) 
// 编写者: 向世明 
// Author: Xiang Shiming 
 
 
#include "stdafx.h" 
#include "Brick.h" 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CBrick::CBrick() 
{ 
	m_byRed = 160; 
	m_byGreen = 24; 
	m_byBlue = 10; 
} 
 
CBrick::~CBrick(){} 
 
//设置颜色 
void CBrick::SetColor(BYTE byRed, BYTE byGreen, BYTE byBlue) 
{ 
	m_byRed = byRed; 
	m_byGreen = byGreen; 
	m_byBlue = byBlue; 
} 
 
 
//绘制整块砖 
//(x,y)-----------------左上角坐标 
//nWidth, nHeight-------宽度和高度 
void CBrick::Whole(CDC* pDC, int x, int y , int nWidth, int nHeight) 
{ 
	//绘制内部 
	CBrush brush(RGB(m_byRed, m_byGreen, m_byBlue)); 
	 
	CRect rect(x + 1, y + 1, x + nWidth - 2, y + nHeight - 2); 
	pDC->FillRect(&rect,&brush); 
	brush.DeleteObject(); 
 
	//边界 
	CPen whitePen(PS_SOLID, 1, RGB(255, 255, 255)); 
	CPen* pOldPen = pDC->SelectObject(&whitePen); 
	pDC->MoveTo(x + nWidth - 1, y); 
	pDC->LineTo(x, y); 
	pDC->LineTo(x, y + nHeight); 
	pDC->SelectObject(pOldPen); 
	whitePen.DeleteObject(); 
 
	CPen grayPen(PS_SOLID, 1, RGB(128, 128, 128)); 
	CPen* pOldPen_1 = pDC->SelectObject(&grayPen); 
	pDC->MoveTo(x + 1, y + nHeight - 2); 
	pDC->LineTo(x + nWidth - 2, y + nHeight - 2); 
	pDC->LineTo(x + nWidth - 2, y); 
	pDC->SelectObject(pOldPen_1); 
	grayPen.DeleteObject(); 
 
	CPen blackPen(PS_SOLID, 1, RGB(0, 0, 0)); 
	CPen* pOldPen_2 = pDC->SelectObject(&blackPen); 
	pDC->MoveTo(x, y + nHeight - 1); 
	pDC->LineTo(x + nWidth - 1, y + nHeight - 1); 
	pDC->LineTo(x + nWidth - 1, y - 1); 
	pDC->SelectObject(pOldPen_2); 
	blackPen.DeleteObject(); 
} 
 
//绘制左边被切割的砖 
//(x,y)-----------------左上角坐标 
//nWidth, nHeight-------宽度和高度 
void CBrick::LeftCutted(CDC* pDC, int x, int y , int nWidth, int nHeight) 
{ 
	//绘制内部 
	CBrush brush(RGB(m_byRed, m_byGreen, m_byBlue)); 
	 
	CRect rect(x, y, x + nWidth - 2, y + nHeight - 2); 
	pDC->FillRect(&rect,&brush); 
	brush.DeleteObject(); 
 
	//边界 
	CPen whitePen(PS_SOLID, 1, RGB(255, 255, 255)); 
	CPen* pOldPen = pDC->SelectObject(&whitePen); 
	pDC->MoveTo(x, y); 
	pDC->LineTo(x + nWidth, y); 
	pDC->SelectObject(pOldPen); 
	whitePen.DeleteObject(); 
 
	CPen grayPen(PS_SOLID, 1, RGB(128, 128, 128)); 
	CPen* pOldPen_1 = pDC->SelectObject(&grayPen); 
	pDC->MoveTo(x, y + nHeight - 2); 
	pDC->LineTo(x + nWidth - 2, y + nHeight - 2); 
	pDC->LineTo(x + nWidth - 2, y); 
	pDC->SelectObject(pOldPen_1); 
	grayPen.DeleteObject(); 
 
	CPen blackPen(PS_SOLID, 1, RGB(0, 0, 0)); 
	CPen* pOldPen_2 = pDC->SelectObject(&blackPen); 
	pDC->MoveTo(x, y + nHeight - 1); 
	pDC->LineTo(x + nWidth - 1, y + nHeight - 1); 
	pDC->LineTo(x + nWidth - 1, y - 1); 
	pDC->SelectObject(pOldPen_2); 
	blackPen.DeleteObject(); 
 
} 
 
//绘制右边被切割的砖 
//(x,y)-----------------左上角坐标 
//nWidth, nHeight-------宽度和高度 
void CBrick::RightCutted(CDC* pDC, int x, int y , int nWidth, int nHeight) 
{ 
	//绘制内部 
	CBrush brush(RGB(m_byRed, m_byGreen, m_byBlue)); 
	 
	CRect rect(x + 1, y + 1, x + nWidth - 1, y + nHeight - 1); 
	pDC->FillRect(&rect,&brush); 
	brush.DeleteObject(); 
 
	//边界 
	CPen whitePen(PS_SOLID, 1, RGB(255, 255, 255)); 
	CPen* pOldPen = pDC->SelectObject(&whitePen); 
	pDC->MoveTo(x + nWidth - 1, y); 
	pDC->LineTo(x, y); 
	pDC->LineTo(x, y + nHeight); 
	pDC->SelectObject(pOldPen); 
	whitePen.DeleteObject(); 
 
	CPen grayPen(PS_SOLID, 1, RGB(128, 128, 128)); 
	CPen* pOldPen_1 = pDC->SelectObject(&grayPen); 
	pDC->MoveTo(x + 1, y + nHeight - 2); 
	pDC->LineTo(x + nWidth - 2, y + nHeight - 2); 
	pDC->SelectObject(pOldPen_1); 
	grayPen.DeleteObject(); 
 
	CPen blackPen(PS_SOLID, 1, RGB(0, 0, 0)); 
	CPen* pOldPen_2 = pDC->SelectObject(&blackPen); 
	pDC->MoveTo(x, y + nHeight - 1); 
	pDC->LineTo(x + nWidth - 1, y + nHeight - 1); 
	pDC->SelectObject(pOldPen_2); 
	blackPen.DeleteObject(); 
}