我正在尝试从书中学习MFC:通过Example(2008)获得MV C ++ Windows Application。有示例应用程序。我可以在其中绘制填充了女巫所选颜色的戒指:
void CRingView::OnDraw(CDC* pDC)
{
CRingDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
PointArray& pointArray = pDoc->GetPointArray();
ColorArray& colorArray = pDoc->GetColorArray();
int iSize = static_cast<int>(pointArray.GetSize());
for (int iIndex = 0; iIndex < iSize; iIndex++)
{
CPoint point = pointArray[iIndex];
COLORREF color = colorArray[iIndex];
CPen pen(PS_SOLID, 0, BLACK);
CBrush brush(color);
pDC->Ellipse(point.x - RADIUS, point.y - RADIUS, point.x + RADIUS, point.y + RADIUS);
CPen* pOldPen = pDC->SelectObject(&pen);
CBrush* pOldBrush = pDC->SelectObject(&brush);
}
}
但是即使我这样做,也没有颜色变化(总是像bg一样是白色):
CBrush brush(BLACK);
所以问题是:我做错了什么?我使用的是Visual Studio 2013,但对于新项目,应该不会出现任何兼容性错误。
黑色是:
static const COLORREF BLACK = RGB(0, 0, 0);
最佳答案
DC会使用当前选择的画笔,钢笔,字体等对象进行绘制。因此,在进行绘制之前,应先使用笔和刷子的SelectObject
。
关于c++ - MFC:戒指-无颜色变化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28364256/