按钮文本与背景图像不可见

时间:2014-10-09 10:31:38

标签: c# winforms

我遇到的情况是我将图像应用于按钮,但由于图像的颜色,按钮的文本并不总是可见。由于不知道按钮图像的颜色(这取决于客户),我不能只更改按钮文本颜色,而且我已经用完了想法!我最好的想法是应用一个中风'到文本(颜色与文本颜色本身相反)因此,即使文本颜色本身不可见,但是笔划将无法找到如何执行此操作的任何相关示例。这是问题的最佳解决方案吗?如果是这样,任何人都可以举例说明如何做到这一点?或者为我的问题推荐更好的解决方案?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我相信你的问题中有两个很好的解决方案之一。

要创建“笔触”或“阴影”,您必须自己绘制按钮。

通常不容易,因为用户可能在他的机器上有活动的视觉风格..

如果您的图片无论如何填满了按钮,您可能会使用相当少的代码行,但是......

这是一个让你入门的小例子:

private void button1_Paint(object sender, PaintEventArgs e)
{
  // the background image
  e.Graphics.DrawImage(button1.BackgroundImage, Point.Empty);
  // maybe a few borderlines ?
  using (Pen penbright = new Pen(Color.FromArgb(155,255,255,255)))
       e.Graphics.DrawRectangle(penbright, button1.ClientRectangle);
  using (Pen pendark = new Pen(Color.FromArgb(155, 0, 0, 0)))
       e.Graphics.DrawRectangle(pendark, 
                                new Rectangle(new Point(-1,-1), button1.ClientSize));
  // Now the Text: Stroke: white over black 
  e.Graphics.DrawString(button1.Text, button1.Font, Brushes.Black, new Point(10,10));
  e.Graphics.DrawString(button1.Text, button1.Font, Brushes.White, new Point(11,11));
}

待改进:

  • 应调整DrawStrings的位置

  • 如果图片没有覆盖整个按钮文字,我们将不得不稍微改进一下代码..

请注意,按下按钮时没有视觉反馈..

另一种解决方案可能是更改图像。

您可以发布一个或两个示例图片吗?