如何绘制3维矩形

有时候我们需要绘制一个三维效果的矩形,比如自绘一个按钮,按下和凸起状态都是三维的。MSDN里好像没有这个API,但MFC的代码里实现了一个

void CDC::Draw3dRect(int x, int y, int cx, int cy, COLORREF clrTopLeft, COLORREF clrBottomRight)
{
        FillSolidRect(x, y, cx - 1, 1, clrTopLeft);
        FillSolidRect(x, y, 1, cy - 1, clrTopLeft);
        FillSolidRect(x + cx, y, -1, cy, clrBottomRight);
        FillSolidRect(x, y + cy, cx, -1, clrBottomRight);
}

就是画四条宽度为一个像素的线,而FillSolidRect的实现如下:

void CDC::FillSolidRect(int x, int y, int cx, int cy, COLORREF clr)
{
        ASSERT_VALID(this);
        ASSERT(m_hDC != NULL);

        ::SetBkColor(m_hDC, clr);
        CRect rect(x, y, x + cx, y + cy);
        ::ExtTextOut(m_hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
}

如果只是画一个像素的线条,个人认为可以用画笔还来的轻松些。

你可能感兴趣的:(如何绘制3维矩形)