📄 gobangdrawer.cpp
字号:
#include "stdafx.h"
#include "GobangDrawer.h"
CGobangDrawer::CGobangDrawer()
{
for( int row = 0; row < 15; row++)
for( int col = 0; col < 15; col++)
{
Chess[row][col] = 0;
}
}
bool CGobangDrawer::Draw(CDC* pDC)
{
ChessLeft = 65;
ChessTop = 50;
ChessWidth = 21;
ChessRect.SetRect(60,45,365,350);
//把位图保存在内存中
//Bitmap.LoadBitmap(IDB_BITMAP);
//Bitmap.GetBitmap(&BMPstruct);
//把位图设置成背景
//CDC *pMemDC=new CDC;
//pMemDC->CreateCompatibleDC(pDC);
//pMemDC->SelectObject(&Bitmap);
//pDC->BitBlt(0,0,BMPstruct.bmWidth,BMPstruct.bmHeight,pMemDC,0,0,SRCCOPY);
//delete pMemDC;
//为棋盘着色
/*CBrush brush( RGB(235,164,84) );
CBrush *pOldbrush = pDC->SelectObject(&brush);
pDC->PatBlt(ChessRect.left, ChessRect.top, ChessRect.Width(),
ChessRect.Height(), PATCOPY );
pDC->SelectObject(pOldbrush);*/
//画棋盘
UINT Left = ChessLeft;
UINT Top = ChessTop;
UINT Width = ChessWidth;
UINT Right = Left+14*Width;
UINT Bottom = Top+14*Width;
CPen BlackPen(PS_SOLID,1,RGB(0,0,0));
CPen BoldBlackPen(PS_SOLID,3,RGB(0,0,0));
CPen WhitePen(PS_SOLID,1,RGB(255,255,255));
CPen BoldWhitePen(PS_SOLID,3,RGB(225,225,225));
CPen YellowPen(PS_SOLID,1,RGB(200,200,0));
CPen *pOldPen=pDC->SelectObject(&YellowPen);
CBrush Brush(RGB(200,200,0));
CBrush *pOldBrush=pDC->SelectObject(&Brush);
int i,j;
pDC->SelectObject(&BoldWhitePen);
pDC->MoveTo(ChessRect.TopLeft());
pDC->LineTo(ChessRect.right,ChessRect.top);
pDC->MoveTo(ChessRect.TopLeft());
pDC->LineTo(ChessRect.left,ChessRect.bottom);
pDC->SelectObject(&BoldBlackPen);
pDC->MoveTo(ChessRect.right,ChessRect.bottom);
pDC->LineTo(ChessRect.right,ChessRect.top+1);
pDC->MoveTo(ChessRect.right,ChessRect.bottom);
pDC->LineTo(ChessRect.left+1,ChessRect.bottom);
pDC->SetPixel(ChessRect.left-1,ChessRect.bottom+1,RGB(0,0,0));
pDC->SetPixel(ChessRect.left,ChessRect.bottom-1,RGB(255,255,255));
pDC->SetPixel(ChessRect.right+1,ChessRect.top-1,RGB(0,0,0));
pDC->SetPixel(ChessRect.right-1,ChessRect.top,RGB(255,255,255));
for(i=0;i<15;i++)
{ pDC->SelectObject(&BlackPen);
pDC->MoveTo(Left+i*Width,Top);
pDC->LineTo(Left+i*Width,Bottom);
pDC->MoveTo(Left,Top+i*Width);
pDC->LineTo(Right,Top+i*Width);
pDC->SelectObject(&WhitePen);
pDC->MoveTo(Left+i*Width+1,Top+1);
pDC->LineTo(Left+i*Width+1,Bottom-1);
pDC->MoveTo(Left+1,Top+i*Width+1);
pDC->LineTo(Right-1,Top+i*Width+1);
}
//画出棋子的信息
for( i = 0; i < 15; i++)
{
for( j = 0; j < 15; j++ )
{
if( Chess[i][j] == 0 )
continue;
else if( Chess[i][j] == 1 ) //是黑棋
{
pDC->SelectStockObject(BLACK_PEN);
pDC->SelectStockObject(BLACK_BRUSH);
pDC->Ellipse(Left+j*Width-10,Top+i*Width-10,
Left+j*Width+10,Top+i*Width+10);
pDC->SelectStockObject(WHITE_PEN);
pDC->Arc(Left+j*Width+7,Top+i*Width-8,Left+j*Width-8,
Top+i*Width+8,Left+j*Width+7,Top+i*Width-8,Left+j*Width-8,
Top+i*Width+8);
}
else //画白棋
{
CPen GrayPen(PS_SOLID,1,RGB(240,240,240));
CBrush GrayBrush(RGB(255,255,255));
pDC->SelectObject(&GrayPen);
pDC->SelectObject(&GrayBrush);
pDC->Ellipse(Left+j*Width-10,Top+i*Width-10,
Left+j*Width+10,Top+i*Width+10);
pDC->SelectStockObject(BLACK_PEN);
pDC->Arc(Left+j*Width-7,Top+i*Width+8,Left+j*Width+8,
Top+i*Width-8,Left+j*Width-7,Top+i*Width+8,Left+j*Width+8,
Top+i*Width-8);
}
}
} //for clause
return true;
}
//更新棋盘信息
bool CGobangDrawer::SetBoard( const char* pBoard )
{
int i, j;
int k = 0;
for( i = 0; i < 15; i++ )
for( j = 0; j < 15; j++ )
{
Chess[i][j] = pBoard[k];
k++;
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -