我使用pDC->Draw3dRect()画了一个矩形,怎么才能设置线的粗细
我使用pDC->Draw3dRect()在dlg上画了一个矩形,但是只能设置颜色~ 我怎么设置这个矩形线的粗细? 谢谢 问题点数:20、回复次数:2Top
1 楼wawaku(一堆裤衩!)回复于 2006-03-18 19:36:34 得分 10
我遇到过这问题,函数本身好像不能改变线宽,改变画笔宽也不行。
我是这样处理的
pDC->Draw3dRect(CRect(20,20,200,200),RGB(192,192,192),RGB(0,0,0));
pDC->Draw3dRect(CRect(21,21,201,201),RGB(192,192,192),RGB(0,0,0));
pDC->Draw3dRect(CRect(22,22,202,202),RGB(192,192,192),RGB(0,0,0));
pDC->Draw3dRect(CRect(23,23,203,203),RGB(192,192,192),RGB(0,0,0));
这样画了四个框就看起来变宽了,你想要不同的效果可以把这四条语句位置反过来画。
或干脆用
pDC->FillRect();
自己拼个相要的矩形也行Top
2 楼iswjh(哪天我才会Turbo C)回复于 2006-03-18 20:01:56 得分 10
请你先看看MFC库的Draw3dRect的实现:
void CDC::FillSolidRect(LPCRECT lpRect, COLORREF clr)
{
ENSURE_VALID(this);
ENSURE(m_hDC != NULL);
ENSURE(lpRect);
::SetBkColor(m_hDC, clr);
::ExtTextOut(m_hDC, 0, 0, ETO_OPAQUE, lpRect, NULL, 0, NULL);
}
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);
//注意:Microsoft使用的是这个文本函数来实现绘制的。
::ExtTextOut(m_hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
}
void CDC::Draw3dRect(LPCRECT lpRect,
COLORREF clrTopLeft, COLORREF clrBottomRight)
{
Draw3dRect(lpRect->left, lpRect->top, lpRect->right - lpRect->left,
lpRect->bottom - lpRect->top, clrTopLeft, clrBottomRight);
}
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);
}
根据上面的代码,你可以自己重写一个出来,不用再教了吧!Top




