在SDI MFC中绘制方形网

时间:2016-06-22 11:26:02

标签: visual-studio-2015 mfc ondraw sdi

如何在SDI MFC中绘制方形网(如国际象棋)? 以及如何确定在特定位置放置更多形状的位置? 我必须使用(Moveto)和(Lineto)并逐个绘制它们? 还是使用位图?或更简单的方法? 我试过这种方式,但它不是很聪明。 谢谢。

COLORREF blueline = RGB(255, 0, 0);
    pen1.CreatePen(PS_SOLID, 3, blueline);
    pDC->SelectObject(&pen1);
    pDC->MoveTo(0,80);
    pDC->LineTo(1024, 80);
    pDC->SelectObject(&pen1);

1 个答案:

答案 0 :(得分:1)

您可以通过调用CDC::FillSolidRect来绘制实心矩形。如果您的矩形应包含更复杂的模式,请改用CDC::FillRect

您可以使用以下伪代码渲染方格板:

for (int x = 0; x < 8; ++x) {
    for (int y = 0; y < 8; ++y ) {
        // Calculate square position and size
        int x0 = x_origin + x * square_width;
        int x1 = x_origin + (x + 1) * square_width;
        int y0 = y_origin + y * square_height;
        int y1 = y_origin + (y + 1) * square_height;
        RECT r = {x0, y0, x1, y1};
        // Pick alternating color
        COLORREF color = (x + y) & 1 ? RGB(0, 0, 0) : RGB(255, 255, 255);
        // Render square
        pDC->FillSolidRect(&r, color);
    }
}
相关问题