首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何清除ActiveX OCX控件的绘图区域?

如何清除ActiveX OCX控件的绘图区域?
EN

Stack Overflow用户
提问于 2012-08-08 15:25:33
回答 1查看 837关注 0票数 0

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

下面是用红色Z绘制黑色省略号的代码:

代码语言:javascript
复制
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, &params);
}

如何清除绘图区域?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-08 16:28:37

我成功地在vb表单编辑器中复制了这个结果。看起来这个问题的出现是因为你没有在椭圆外画任何东西。因此,在用OnDraw()绘制任何东西之前,您可以在整个区域中绘制一个矩形。

代码语言:javascript
复制
pdc->FillRect( rcBounds, &CBrush(TranslateColor( AmbientBackColor() )) );

我对此进行了测试,现在运行良好。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11867929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档