【问题标题】:Why text is not showing in a gradient Button?为什么文本没有显示在渐变按钮中?
【发布时间】:2013-10-05 22:34:54
【问题描述】:

我使用下面的代码为窗口窗体中的按钮设置渐变。它有效,但它的文本没有显示。我应该怎么做才能修复它? 谢谢。

 private void Form1_Load(object sender, EventArgs e)
 {
       button2.Paint += new PaintEventHandler(this.Button2_Paint);
 }
 private void Button2_Paint(object sender, PaintEventArgs e)
 {
      Graphics g = e.Graphics;
      g.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(PointF.Empty, new PointF(button2.Width, button2.Height), Color.Pink, Color.Red), new RectangleF(PointF.Empty, button2.Size));
  }

【问题讨论】:

    标签: c# styles gradient winapp


    【解决方案1】:

    这是因为您从未真正绘制过该文本。目前,您仅使用渐变填充按钮的客户端矩形,但其中没有任何文本。要显示带有按钮文本的字符串,您需要在 Paint 方法中添加更多行:

     private void Button2_Paint(object sender, PaintEventArgs e)
     {
        Button btn= (Button)sender;
        Graphics g = e.Graphics;
        g.FillRectangle(new System.Drawing.Drawing2D.LinearGradientBrush(PointF.Empty, new PointF(button2.Width, button2.Height), Color.Pink, Color.Red), new RectangleF(PointF.Empty, button2.Size));
        SizeF size = g.MeasureString(btn.Text, btn.Font);
        PointF topLeft = new PointF(btn.Width / 2 - size.Width / 2, btn.Height / 2 - size.Height / 2);
        g.DrawString(btn.Text, btn.Font, Brushes.Black, topLeft);
      }
    

    这里Graphics.MeasureString 为您提供按钮的Text 属性的宽度和高度,这些值用于将文本定位在按钮的正中间。而Graphics.DrawString 只是用提供的颜色、字体和位置绘制字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2022-08-18
      • 2020-07-25
      • 2021-06-16
      • 1970-01-01
      相关资源
      最近更新 更多