首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DrawThemeTextEx和剪裁光晕

DrawThemeTextEx和剪裁光晕
EN

Stack Overflow用户
提问于 2011-11-06 16:22:50
回答 1查看 474关注 0票数 2

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

仅供参考,文本格式定义如下:

代码语言:javascript
复制
  Dim uFormat As Integer = TextFormatFlags.NoPrefix Or TextFormatFlags.WordBreak Or _
            TextFormatFlags.TextBoxControl Or TextFormatFlags.EndEllipsis

这个问题能解决吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-07 04:50:26

默认情况下,此example用于文本的中间居中对齐。默认情况下,使用(NoPrefix|WordBreak|TextBoxControl|EndEllipsis)的格式是左对齐的。因此,要修复光晕剪切,应扩展光晕边界。

以下是修正后的样本:

代码语言:javascript
复制
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);
//...    
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8025940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档