使用this complete example,我可以在航空玻璃上绘制文本。呈现效果非常好,但有一个视觉问题:发光在文本对齐一侧被裁剪。

仅供参考,文本格式定义如下:
Dim uFormat As Integer = TextFormatFlags.NoPrefix Or TextFormatFlags.WordBreak Or _
TextFormatFlags.TextBoxControl Or TextFormatFlags.EndEllipsis这个问题能解决吗?
发布于 2011-11-07 04:50:26
默认情况下,此example用于文本的中间居中对齐。默认情况下,使用(NoPrefix|WordBreak|TextBoxControl|EndEllipsis)的格式是左对齐的。因此,要修复光晕剪切,应扩展光晕边界。
以下是修正后的样本:
public void DrawTextOnGlass(IntPtr hwnd, String text, Font font, Rectangle bounds, int glowSize){
//...
RECT glowRect = new RECT();
RECT textRect = new RECT();
glowRect.left = bounds.Left - glowSize;
glowRect.right = bounds.Right + glowSize;
glowRect.top = bounds.Top - glowSize;
glowRect.bottom = bounds.Bottom + glowSize;
textRect.left = glowSize;
textRect.top = glowSize;
textRect.right = glowRect.right - glowRect.left;
textRect.bottom = glowRect.bottom - glowRect.top;
//...
int uFormat = (int)(TextFormatFlags.NoPrefix
| TextFormatFlags.WordBreak | TextFormatFlags.TextBoxControl | TextFormatFlags.EndEllipsis);
//...
DrawThemeTextEx(renderer.Handle, Memdc, 0, 0, text, -1, uFormat, ref textRect, ref dttOpts);
BitBlt(destdc, glowRect.left, glowRect.top,
glowRect.right - glowRect.left,
glowRect.bottom - glowRect.top,
Memdc, 0, 0, SRCCOPY);
//...
}https://stackoverflow.com/questions/8025940
复制相似问题