代码之家  ›  专栏  ›  技术社区  ›  Coxy

为什么我的windows窗体字符串在反锯齿时看起来如此难看?

  •  5
  • Coxy  · 技术社区  · 15 年前

    我在图形盒的顶部手工绘制一些字符串,因为你不能有一个带有稀疏背景的标签。

    不管我尝试哪种渲染模式,我都不能让字符串看起来很好(例如,它们会出现在Word或图形程序中)。

    下面是一张界面模型的图片,与屏幕上的渲染进行了比较: enter image description here

    不幸的是,stackoverflow似乎缩小了图片,所以这里也有一个直接链接: http://i.stack.imgur.com/vYFaF.png

    下面是用于呈现的代码:

    private void pictureBox1_Paint(object sender, PaintEventArgs e)
    {
      Graphics labelDrawing = e.Graphics;
      labelDrawing.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
    
      labelDrawing.DrawString("Setup Progress", new Font("Calibri", 10, FontStyle.Bold, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(12, 9));
      labelDrawing.DrawString("The following components are being configured.", new Font("Calibri", 10, FontStyle.Regular, GraphicsUnit.Point, 0), new SolidBrush(Color.Black), new Point(24, 27));
    }
    

    我已经尝试过依次将textrenderinghint更改为每个选项,但是无论我尝试什么,如果有任何反锯齿,它都会以模糊的、像屏幕截图中那样的混乱状态出现。有什么想法吗?

    1 回复  |  直到 10 年前
        1
  •  2
  •   ParmesanCodice    15 年前

    在.NET中可以有透明标签。
    在上查看有关codeproject的文章 How to Use Transparent Images and Labels in Windows Forms

    至于你画画的问题 克利米 没有10的本机字体大小。你可以在控制面板-GT字体中验证这一点。最小的本机字体大小是12(至少在我的机器上)。把你的尺码改成12号,你会发现它好多了。

    如果不使用本机字体大小 在某处 在引擎盖下,windows/.net/gdi+将尝试为您缩放字体。这种缩放很可能导致您的问题。