我必须首先在透明位图上绘制一个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上的字符绘制有一些字体大小的黑板。
我该如何避免这个问题? 非常感谢!
答案 0 :(得分:2)
我认为这里的问题是您将文本绘制到透明背景上。
您可以尝试在调用tempGr.Clear ...
之后添加此行tempGr.TextRenderingHint = TextRenderingHint.AntiAlias;
ps - 抱歉不确定C ++中的确切语法;)
答案 1 :(得分:1)
我刚刚在XNA中解决了这个问题:
将背景清除为与前景色相同。唯一的区别是背景应该具有Alpha = 0,并且前景具有Alpha>> 0
黑色边框来自您的背景和不同颜色的前景的混合。尝试将背景清除一些对比色以充分理解这种现象。