【问题标题】:How do I draw a rounded rectangle without filling it (in MFC)?如何在不填充的情况下绘制圆角矩形(在 MFC 中)?
【发布时间】:2015-02-19 09:30:23
【问题描述】:

MFC/GDI 大师的另一个绘图问题... :-)

我正在使用 MFC,并且正在使用 CDC 对象进行一些绘图。效果很好。

但现在我想画一个圆角矩形,线宽几个像素。但我不希望发生任何填充!有一种方法 CDC::RoundRect - 我只是设置了我想要的笔并用那支笔得到一个漂亮的圆角矩形。但 CDC::RoundRect 也会用当前画笔填充矩形。

有没有什么方法可以只画线而不用填充?还有什么我没找到的方法吗?或者我可以创建某种不会改变矩形中间内容的“空笔刷”吗?

我会非常感谢一些好的建议!

/来自瑞典的安德斯

【问题讨论】:

    标签: windows mfc drawrectangle gdi


    【解决方案1】:

    在绘制圆角矩形之前选择一个NULL笔刷,比如

    CPen pen;
    CBrush* pOldBrush;
    CPen* pOldPen;
    if (!pen.CreatePenIndirect(&m_logpen))
        return;
    pOldBrush = (CBrush*)pDC->SelectStockObject(NULL_BRUSH);
    pOldPen = pDC->SelectObject(&pen);
    pDC->RoundRect(m_rect, m_roundness);
    pDC->SelectObject(pOldBrush);
    pDC->SelectObject(pOldPen);
    

    【讨论】:

    • 啊 - 有一个 NULL_BRUSH。一直在找那个,没有找到。谢谢! :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多