您是否尝试过使用CreateRoundRectRegion的组合然后FillRgn来填充非矩形区域?
这在文档中给出CreateRoundRectRegion的例子:
CRgn rgnA, rgnB, rgnC;
VERIFY(rgnA.CreateRoundRectRgn(50, 50, 150, 150, 30, 30));
VERIFY(rgnB.CreateRoundRectRgn(200, 75, 250, 125, 50, 50));
VERIFY(rgnC.CreateRectRgn(0, 0, 50, 50));
int nCombineResult = rgnC.CombineRgn(&rgnA, &rgnB, RGN_OR);
ASSERT(nCombineResult != ERROR && nCombineResult != NULLREGION);
CBrush brA, brB, brC;
VERIFY(brA.CreateSolidBrush(RGB(255, 0, 0)));
VERIFY(pDC->FillRgn(&rgnA, &brA)); // rgnA Red Filled
VERIFY(brB.CreateSolidBrush(RGB(0, 255, 0)));
VERIFY(pDC->FillRgn(&rgnB, &brB)); // rgnB Green Filled
VERIFY(brC.CreateSolidBrush(RGB(0, 0, 255))); // rgnC Blue
VERIFY(pDC->FrameRgn(&rgnC, &brC, 2, 2));
一般情况下,当你想要做的,你必须开始寻找到区域的非矩形区域的东西。
我还没有尝试过,但我没有看到如何解决我的问题。这不会在该区域的底部创建圆角边缘吗? – 2009-12-16 23:21:58
现在你已经编辑了它,我看到有一个CombineRgn函数。这可能有帮助。 – 2009-12-16 23:25:22
我认为这是正确的想法,但代码有点混乱。你想要做的就是创建一个区域,它是一个矩形与四舍五入矩形的交点。 – 2009-12-16 23:28:24