如何更改 Winforms 按钮上第二行文本的字体大小和颜色?
How to change font size and color in second line of text on a Winforms button?
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;
如何更改按钮第二行文本中的字体大小和颜色?
标准 System.Windows.Forms.Button
class 无法实现您想做的事情(我假设 button
是其中的一个实例):字体大小和颜色适用于所有文本;您不能仅为文本的一部分更改这些属性。
(顺便说一句,您按钮中的第二行文本是空行,因此您可能不会注意到不同的字体或颜色。您是指第三行文本吗?)
无法使用 .Text
属性...
...但是您可以创建一个动态位图来代替文本,允许您根据需要对其进行格式化:
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 布局、and/or 定位的最佳组合,以使其看起来如您所愿。还有其他 DrawString() 重载以不同方式呈现文本。
请注意,控件突出显示的方式会有所不同。在我的系统上,标准按钮的整个区域在鼠标进入时高亮显示。使用这种方法,只有 边框 会突出显示,因为按钮的整个中间都是静态图像。
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;
如何更改按钮第二行文本中的字体大小和颜色?
标准 System.Windows.Forms.Button
class 无法实现您想做的事情(我假设 button
是其中的一个实例):字体大小和颜色适用于所有文本;您不能仅为文本的一部分更改这些属性。
(顺便说一句,您按钮中的第二行文本是空行,因此您可能不会注意到不同的字体或颜色。您是指第三行文本吗?)
无法使用 .Text
属性...
...但是您可以创建一个动态位图来代替文本,允许您根据需要对其进行格式化:
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 布局、and/or 定位的最佳组合,以使其看起来如您所愿。还有其他 DrawString() 重载以不同方式呈现文本。
请注意,控件突出显示的方式会有所不同。在我的系统上,标准按钮的整个区域在鼠标进入时高亮显示。使用这种方法,只有 边框 会突出显示,因为按钮的整个中间都是静态图像。