这是我想要的效果:按钮的文字有黑色背景。
这就是我目前正在生成按钮的方式:
//Button generated to add to the tab page (remmember buttons represent products)
Button b = new Button();
//Giving button appropiate size so it looks good and is suffient size to be touch screen compatible
b.Size = new Size(80, 80);
////Giving it a better font
int newSize = 10;
//b.Font = new Font("Imperium Hollow", newSize);
b.ForeColor = Color.White;
//Displaying the Product/Buttons details on the button.
b.Text = row["Description"].ToString() + Environment.NewLine + "£" + Convert.ToDecimal(row["Price"]);
我在互联网上这个,但我不知道如何用我的代码实现它 https://msdn.microsoft.com/en-us/library/baw6k39s(v=vs.110).aspx
修改
@Zohar Peled,谢谢它完成了这项工作,结果就是这样:
正如你所看到的那样,当我绘制文本时,文本没有格式化以适应按钮我希望文本适合像这样的按钮(我仍然想要黑色背景,但也需要格式化,因此它适合于按钮)。
我如何实现这一目标?
答案 0 :(得分:1)
您可以使用OnPaint事件和TextRendered来绘制如下文本:
private void button1_Paint(object sender, PaintEventArgs e)
{
var b = sender as Button;
TextRenderer.DrawText(e.Graphics, b.Text, b.Font, e.ClipRectangle, Color.White, Color.Black);
}
使用文本格式标志更改文本的显示方式。此外,不使用e.ClipRectangle,而是使用更小的矩形。 (在我的测试中,2个像素似乎没问题):
private void button1_Paint_1(object sender, PaintEventArgs e)
{
var b = sender as Button;
var rect = e.ClipRectangle;
rect.Inflate(-2, -2);
var flags = TextFormatFlags.WordBreak;
switch (b.TextAlign)
{
case ContentAlignment.BottomCenter:
flags |= TextFormatFlags.Bottom | TextFormatFlags.HorizontalCenter;
break;
case ContentAlignment.BottomLeft:
flags |= TextFormatFlags.Bottom;
break;
case ContentAlignment.MiddleCenter:
flags |= TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter;
break;
// .... add more cases
}
TextRenderer.DrawText(e.Graphics, b.Text, b.Font, rect, Color.White, Color.Black, flags);
}