绘制图像到透明位图时,字符周围的黑色边框

时间:2009-10-21 09:19:11

标签: c++ gdi+ drawstring

我必须首先在透明位图上绘制一个String,然后将A绘制到目标画布。 但是在某些情况下,角色周围会出现黑色边框。

Bitmap* tempImg = new Bitmap(1000, 1000, PixelFormat32bppARGB);
Graphics tempGr(tempImg);
tempGr.Clear(Color(0, 255,255,255));
Gdiplus::SolidBrush* brush = new SolidBrush(Color(255, 255, 0, 0 ));
Gdiplus::FontFamily  fontFamily(L"Times New Roman");
Gdiplus::Font*  font = new Gdiplus::Font(&fontFamily, 19, FontStyleRegular, UnitPixel);
RectF rec(400, 400, 1000, 10000);
tempGr.DrawString(
    L"Merry Chrismas", 
    -1,
    font,
    rec,
    NULL,
    brush
    );

Graphics desGr(hdc);
desGr.Clear(Color::Gray);
desGr.DrawImage(tempImg , 0,0, 1000, 1000);

desGr上的字符绘制有一些字体大小的黑板。

我该如何避免这个问题? 非常感谢!

2 个答案:

答案 0 :(得分:2)

我认为这里的问题是您将文本绘制到透明背景上。

您可以尝试在调用tempGr.Clear ...

之后添加此行
tempGr.TextRenderingHint = TextRenderingHint.AntiAlias;

ps - 抱歉不确定C ++中的确切语法;)

答案 1 :(得分:1)

我刚刚在XNA中解决了这个问题:

将背景清除为与前景色相同。唯一的区别是背景应该具有Alpha = 0,并且前景具有Alpha>> 0

黑色边框来自您的背景和不同颜色的前景的混合。尝试将背景清除一些对比色以充分理解这种现象。