📄 draw.cpp
字号:
// Draw.cpp: implementation of the CDraw class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "WinMine.h"
#include "Draw.h"
#include <cmath>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDraw::CDraw()
{
m_bmp.LoadBitmap(IDB_BITMAP4);
m_bmp1.LoadBitmap(IDB_BITMAP1);
}
CDraw::~CDraw()
{
}
void CDraw::InitDraw(CDC *pDC)
{
CDC m_mdc;
m_mdc.CreateCompatibleDC(pDC);
m_mdc.SelectObject(&m_bmp);
CBrush brush;
brush.CreateSolidBrush(RGB(100,111,109));
pDC->SelectObject(&brush);
pDC->Rectangle(0,0,m_nColumn*m_nWidth+12,60+m_nRow*m_nHeigth);
for(int i = 0; i < m_nRow; i++)
for(int j = 0; j < m_nColumn; j++)
{
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&m_mdc,0,0,SRCCOPY);
}
}
void CDraw::LBDownDraw(int i,int j,bool m_bEnd,CDC *pDC)
{
CDC mdc;
mdc.CreateCompatibleDC(pDC);
mdc.SelectObject(&m_bmp);
for(int m = 0; m < m_nRow; m++)
for(int n = 0; n < m_nColumn; n++)
{
if(MatrixLabel[m][n])
{
pDC->BitBlt(6+n*m_nWidth,52+m*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,(15 - Matrix[m][n])*m_nHeigth,SRCCOPY);
if(m_bEnd)
{
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,3*m_nHeigth,SRCCOPY);
for(int a = 0; a < m_nRow; a++)
for(int b = 0; b < m_nColumn; b++)
{
if(Matrix[a][b] == -1 && (a != i || b != j))
{
if(R_MatrixLabel[a][b] != 1)
pDC->BitBlt(6+b*m_nWidth,52+a*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,5*m_nHeigth,SRCCOPY);
if(R_MatrixLabel[a][b] == 1)
pDC->BitBlt(6+b*m_nWidth,52+a*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,m_nHeigth,SRCCOPY);
}
if(Matrix[a][b] != -1 && R_MatrixLabel[a][b] == 1)
pDC->BitBlt(6+b*m_nWidth,52+a*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,4*m_nHeigth,SRCCOPY);
}
}
}
}
}
void CDraw::RBDownDraw(CDC *pDC)
{
CDC mdc;
mdc.CreateCompatibleDC(pDC);
mdc.SelectObject(&m_bmp);
for(int i = 0; i < m_nRow; i++)
for(int j = 0; j < m_nColumn; j++)
{
if(R_MatrixLabel[i][j] == 1 && !MatrixLabel[i][j])
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,m_nHeigth,SRCCOPY);
if(R_MatrixLabel[i][j] == 2 && !MatrixLabel[i][j])
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,2*m_nHeigth,SRCCOPY);
if(R_MatrixLabel[i][j] == 3 && !MatrixLabel[i][j])
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,0,SRCCOPY);
}
}
void CDraw::SuccessDraw(CDC * pDC)
{
CDC mdc;
mdc.CreateCompatibleDC(pDC);
mdc.SelectObject(&m_bmp);
m_bmp1.GetBitmap(&info);
CDC mdc1;
mdc1.CreateCompatibleDC(pDC);
mdc1.SelectObject(&m_bmp1);
for(int i =0 ; i < m_nRow; i++)
for(int j = 0; j < m_nColumn; j++)
{
if(Matrix[i][j] == -1)
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,m_nHeigth,SRCCOPY);
else
if(MatrixLabel[i][j])
pDC->BitBlt(6+j*m_nWidth,52+i*m_nHeigth,m_nWidth,m_nHeigth,&mdc,0,(15 - Matrix[i][j])*m_nHeigth,SRCCOPY);
}
pDC->BitBlt(12,10,info.bmWidth,info.bmHeight/12,&mdc1,0,11*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc1,0,11*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc1,0,11*info.bmHeight/12,SRCCOPY);
}
void CDraw::DigitsDraw(CDC *pDC)
{
m_bmp1.GetBitmap(&info);
CDC mdc;
mdc.CreateCompatibleDC(pDC);
mdc.SelectObject(&m_bmp1);
int num = bombs - RFlag;
int a[3],i=0;
if(num >= 10)
{
while(num >= 1)
{
a[i++] = num % 10;
num /= 10;
}
for(i = 2; i >= 0; i--)
pDC->BitBlt(12 + (2-i)*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-a[i])*info.bmHeight/12,SRCCOPY);
}
else
if(num >= 0)
{
pDC->BitBlt(12,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-num)*info.bmHeight/12,SRCCOPY);
}
else
{
pDC->BitBlt(12,10,info.bmWidth,info.bmHeight/12,&mdc,0,0,SRCCOPY);
int temp = abs(num);
if(temp < 10)
{
pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-temp)*info.bmHeight/12,SRCCOPY);
}
else
{
pDC->BitBlt(12+info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-temp/10)*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(12+2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-temp%10)*info.bmHeight/12,SRCCOPY);
}
}
}
void CDraw::TimeDraw(CDC *pDC)
{
m_bmp1.GetBitmap(&info);
CDC mdc;
mdc.CreateCompatibleDC(pDC);
mdc.SelectObject(&m_bmp1);
if(m_ntime < 100)
{
pDC->BitBlt(m_nColumn*m_nWidth-3*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
if(m_ntime < 10)
{
pDC->BitBlt(m_nColumn*m_nWidth-2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,11*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(m_nColumn*m_nWidth-info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime)*info.bmHeight/12,SRCCOPY);
}
else
{
pDC->BitBlt(m_nColumn*m_nWidth-2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime/10)*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(m_nColumn*m_nWidth-info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime%10)*info.bmHeight/12,SRCCOPY);
}
}
else
{
pDC->BitBlt(m_nColumn*m_nWidth-3*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime/100)*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(m_nColumn*m_nWidth-2*info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime/10%10)*info.bmHeight/12,SRCCOPY);
pDC->BitBlt(m_nColumn*m_nWidth-info.bmWidth,10,info.bmWidth,info.bmHeight/12,&mdc,0,(11-m_ntime%100)*info.bmHeight/12,SRCCOPY);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -