如何在Winforms按钮的第二行文本中更改字体大小和颜色?

时间:2015-01-28 22:10:26

标签: c# winforms button colors line

 this.Controls.Add(button);
 button.Font = new Font("Arial", 8);
 button.Name = "btn" + idDanych;
 button.Width = 100;
 button.Height = 100;
 button.Location = new Point(0, 0);
 button.Text = "…" + Environment.NewLine + Environment.NewLine + "…";
 button.ForeColor = Color.Black;

如何在按钮的第二行文字中更改字体大小和颜色?

2 个答案:

答案 0 :(得分:2)

使用.Text属性<...

是不可能的

...但您可以创建一个动态位图来代替文本,允许您根据需要对其进行格式化:

Button with Custom String Rendering via an Image

        Button button = new Button();
        button.Name = "btn" + idDanych;
        button.Width = 100;
        button.Height = 100;
        button.Location = new Point(0, 0);

        button.Text = "";
        Bitmap bmp = new Bitmap(button.ClientRectangle.Width, button.ClientRectangle.Height);
        using (Graphics G = Graphics.FromImage(bmp))
        {
            G.Clear(button.BackColor);

            string line1 = "( " + Wieszak + " ) " + Haczyk;
            string line2 = KodEAN;

            StringFormat SF = new StringFormat();
            SF.Alignment = StringAlignment.Center;
            SF.LineAlignment = StringAlignment.Near;
            using (Font arial = new Font("Arial", 12))
            {
                Rectangle RC = button.ClientRectangle;
                RC.Inflate(-5, -5);
                G.DrawString(line1, arial, Brushes.Black, RC, SF);
            }

            using (Font courier = new Font("MS Courier", 24))
            {
                SF.LineAlignment = StringAlignment.Center;
                G.DrawString(line2, courier, Brushes.Red, button1.ClientRectangle, SF);
            }
        }
        button.Image = bmp;
        button.ImageAlign = ContentAlignment.MiddleCenter;

        this.Controls.Add(button);

您必须找出字体大小,StringFormat布局和/或定位的最佳组合,以使其看起来符合要求。还有其他DrawString()重载以不同的方式呈现文本。

请注意,控件突出显示的方式会有所不同。在我的系统上,当鼠标进入时,标准按钮的整个区域会突出显示。使用此方法时,只有边框会突出显示,因为按钮的整个中间部分是静态图像。

答案 1 :(得分:0)

使用标准System.Windows.Forms.Button class(其中,我假设button是一个实例)无法实现您想要做的事情:字体大小和颜色适用于所有文本;您不能仅为文本的一部分更改这些属性。

(顺便说一句,你的按钮中的第二行文字是一个空行,所以你可能不会注意到不同的字体或颜色。你的意思是第三行文字吗?)