谢谢~

解决方案 »

  1.   

    我需要棋盘占一个diaog的一般左右
    在vc里 画不了这么大的
    用画图板画又老是运行时候内存出错疯了~
      

  2.   

    void CChessDlg::MakeBoard(int nCurTime)//画棋盘
    {
    //填充

    MakeWood(XBW+123,YBW,RGB(180,220,160),-nCurTime%XBW,nCurTime%YBW,nCurTime%1000+500,FLOAT(nCurTime%20/1000.1+0.01),20);// CBrush br(GetSysColor(COLOR_3DFACE));//得到系统颜色
    // CRect rect(0,0,XBW,YBW);
    // m_pdcBoard->FillRect(rect,&br);
    //画棋盘
    CPen pen[2];
    pen[0].CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DHILIGHT));
    pen[1].CreatePen(PS_SOLID,0,GetSysColor(COLOR_3DSHADOW));

    for(int i=0;i<=1;i++)
    {
    m_pdcBoard->SelectObject(pen[i]);
    //画边框(双线)
    m_pdcBoard->MoveTo(XC[i]-3,YC[i]-3);
    m_pdcBoard->LineTo(XC[i]-3,YC[i]+3+BWA*9);
    m_pdcBoard->LineTo(XC[i]+3+BWA*8,YC[i]+3+BWA*9);
    m_pdcBoard->LineTo(XC[i]+3+BWA*8,YC[i]-3);
    m_pdcBoard->LineTo(XC[i]-3,YC[i]-3); m_pdcBoard->MoveTo(XC[i],YC[i]);
    m_pdcBoard->LineTo(XC[i],YC[i]+BWA*9);
    m_pdcBoard->LineTo(XC[i]+BWA*8,YC[i]+BWA*9);
    m_pdcBoard->LineTo(XC[i]+BWA*8,YC[i]);
    m_pdcBoard->LineTo(XC[i],YC[i]);
    //画竖线
    int n;
    for( n=1;n<=8;n++)
    {
    m_pdcBoard->MoveTo(XC[i],YC[i]+BWA*n);
    m_pdcBoard->LineTo(XC[i]+BWA*8,YC[i]+BWA*n);
    }
    for( n=1;n<=7;n++)
    {
    m_pdcBoard->MoveTo(XC[i]+BWA*n,YC[i]);
    m_pdcBoard->LineTo(XC[i]+BWA*n,YC[i]+BWA*4);

    m_pdcBoard->MoveTo(XC[i]+BWA*n,YC[i]+BWA*5);
    m_pdcBoard->LineTo(XC[i]+BWA*n,YC[i]+BWA*9);
    }
    //画宫
    m_pdcBoard->MoveTo(XC[i]+BWA*3,YC[i]+BWA*0);
    m_pdcBoard->LineTo(XC[i]+BWA*5,YC[i]+BWA*2); //上捺

    m_pdcBoard->MoveTo(XC[i]+BWA*5,YC[i]+BWA*0);
    m_pdcBoard->LineTo(XC[i]+BWA*3,YC[i]+BWA*2); //上撇

    m_pdcBoard->MoveTo(XC[i]+BWA*3,YC[i]+BWA*7);
    m_pdcBoard->LineTo(XC[i]+BWA*5,YC[i]+BWA*9); //下捺

    m_pdcBoard->MoveTo(XC[i]+BWA*5,YC[i]+BWA*7);
    m_pdcBoard->LineTo(XC[i]+BWA*3,YC[i]+BWA*9); //下撇
    //画星
    MB_DrawStar(7,2,i);
    MB_DrawStar(1,2,i);
    MB_DrawStar(0,3,i);
    MB_DrawStar(2,3,i);
    MB_DrawStar(4,3,i);
    MB_DrawStar(6,3,i);
    MB_DrawStar(8,3,i); MB_DrawStar(7,7,i);
    MB_DrawStar(1,7,i);
    MB_DrawStar(0,6,i);
    MB_DrawStar(2,6,i);
    MB_DrawStar(4,6,i);
    MB_DrawStar(6,6,i);
    MB_DrawStar(8,6,i);
    }
            m_pdcBoard->SetBkMode(TRANSPARENT);     //不要文字背景
        m_pdcBoard->SetTextColor(RGB(255,0,0)); //设置文本颜色:红色
        m_pdcBoard->TextOut(50,175," 楚        河 ");
    m_pdcBoard->TextOut(200,175,"汉        界 ");
    }void CChessDlg::MB_DrawStar(int x,int y,int i)//画星
    {
    if(x!=0)
    {
    m_pdcBoard->MoveTo(XC[i]+BWA*x-3,YC[i]+BWA*y-3);
    m_pdcBoard->LineTo(XC[i]+BWA*x-6,YC[i]+BWA*y-3); m_pdcBoard->MoveTo(XC[i]+BWA*x-3,YC[i]+BWA*y-3);
    m_pdcBoard->LineTo(XC[i]+BWA*x-3,YC[i]+BWA*y-6); m_pdcBoard->MoveTo(XC[i]+BWA*x-3,YC[i]+BWA*y+3);
    m_pdcBoard->LineTo(XC[i]+BWA*x-6,YC[i]+BWA*y+3); m_pdcBoard->MoveTo(XC[i]+BWA*x-3,YC[i]+BWA*y+3);
    m_pdcBoard->LineTo(XC[i]+BWA*x-3,YC[i]+BWA*y+6);
    }
    if(x!=8)
    {
    m_pdcBoard->MoveTo(XC[i]+BWA*x+3,YC[i]+BWA*y-3);
    m_pdcBoard->LineTo(XC[i]+BWA*x+6,YC[i]+BWA*y-3); m_pdcBoard->MoveTo(XC[i]+BWA*x+3,YC[i]+BWA*y-3);
    m_pdcBoard->LineTo(XC[i]+BWA*x+3,YC[i]+BWA*y-6); m_pdcBoard->MoveTo(XC[i]+BWA*x+3,YC[i]+BWA*y+3);
    m_pdcBoard->LineTo(XC[i]+BWA*x+6,YC[i]+BWA*y+3); m_pdcBoard->MoveTo(XC[i]+BWA*x+3,YC[i]+BWA*y+3);
    m_pdcBoard->LineTo(XC[i]+BWA*x+3,YC[i]+BWA*y+6);
    }}
      

  3.   

    变量定义: CDC* m_pdcBoard; //储存棋盘图案的 DC
    CDC* m_pdcBack; //缓冲 DC下面这个函数是美化,可注释掉//////////////////////////////
    MakeWood(XBW+123,YBW,RGB(180,220,160),-nCurTime%XBW,nCurTime%YBW,nCurTime%1000+500,FLOAT(nCurTime%20/1000.1+0.01),20);
      

  4.   

    在BOOL CChessDlg::OnInitDialog()里添加 CClientDC dc(this); //Create Bitmap for DC
    m_pdcBack->CreateCompatibleDC(&dc);
    m_pdcBoard->CreateCompatibleDC(&dc);
    m_pdcBoard->SelectObject(&m_Bitmap1);
    m_pdcBack->SelectObject(&m_Bitmap2);


    MakeBoard((int)::GetTickCount()); //画棋盘(3D)
      

  5.   

    楼上 你写的这个源代码 我已经试过了
    还要用到 bwa 等等函数这样就需要再用其程序中的的部分代码和头文件
      

  6.   

    肯定不止是画棋盘吧,还要放棋子。
    参考这个例子程序(两者都有):
    http://www.vccode.com/showthread.php?s=&threadid=4828