我在绘制ActiveX控件时遇到了一些问题。在下面的屏幕截图中,您可以看到在VB6 IDE中调整大小之后的控件。控件在调整大小之前的轮廓仍显示在控件的左侧:

下面是用红色Z绘制黑色省略号的代码:
void CzFileIoXCtrl::OnDraw(CDC* pdc,
const CRect& rcBounds,
const CRect& rcInvalid)
{
if (!pdc)
{
return;
}
pdc->SetBkMode(TRANSPARENT);
pdc->SelectObject(CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH)));
pdc->Ellipse(rcBounds.left, rcBounds.top,
rcBounds.left + rcBounds.Width(),
rcBounds.top + rcBounds.Height());
HFONT font = CreateFont(int(rcBounds.Height() * 0.7),
int(rcBounds.Width() * 0.5),
0, 0, FW_BLACK, FALSE, FALSE, FALSE,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
CLEARTYPE_QUALITY,
FF_DECORATIVE, NULL);
pdc->SelectObject(font);
pdc->SetTextColor(RGB(255, 0, 0));
DRAWTEXTPARAMS params = { sizeof(DRAWTEXTPARAMS), 1, 0, 0, 1 };
RECT bounds = rcBounds;
CString z(L"Z");
pdc->DrawTextEx(z, &bounds, DT_CENTER | DT_VCENTER | DT_SINGLELINE, ¶ms);
}如何清除绘图区域?
发布于 2012-08-08 16:28:37
我成功地在vb表单编辑器中复制了这个结果。看起来这个问题的出现是因为你没有在椭圆外画任何东西。因此,在用OnDraw()绘制任何东西之前,您可以在整个区域中绘制一个矩形。
pdc->FillRect( rcBounds, &CBrush(TranslateColor( AmbientBackColor() )) );我对此进行了测试,现在运行良好。
https://stackoverflow.com/questions/11867929
复制相似问题