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

C# 按钮文本与背景图像不可见,c#,winforms,C#,Winforms,我有一种情况,我将图像应用于按钮,但是由于图像的颜色,按钮的文本并不总是可见的。我不能仅仅改变按钮文本的颜色,因为不知道按钮图像将是什么颜色。这取决于客户,我已经没有办法尝试了!我的最佳想法是在文本上使用与文本颜色相反的颜色,因此,即使文本颜色本身不可见,笔划也将可见。然而,我无法找到任何相关的示例来说明如何执行此操作。这是解决问题的最好办法吗?如果是这样的话,有谁能举例说明如何做到这一点?还是为我的问题推荐更好的解决方案 提前谢谢。我相信你的问题有两个很好的解决方案 要创建“笔划”或“阴影”,

我有一种情况,我将图像应用于按钮,但是由于图像的颜色,按钮的文本并不总是可见的。我不能仅仅改变按钮文本的颜色,因为不知道按钮图像将是什么颜色。这取决于客户,我已经没有办法尝试了!我的最佳想法是在文本上使用与文本颜色相反的颜色,因此,即使文本颜色本身不可见,笔划也将可见。然而,我无法找到任何相关的示例来说明如何执行此操作。这是解决问题的最好办法吗?如果是这样的话,有谁能举例说明如何做到这一点?还是为我的问题推荐更好的解决方案


提前谢谢。

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

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

通常不容易,因为用户在其机器上可能具有活动的视觉样式

但是,如果您的图像填充了按钮,那么您可能只需要几行代码

下面是一个小例子,让您开始:

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));
}
有待改进:

应调整拉丝的位置

如果图像没有覆盖整个按钮文本,我们将不得不对代码进行一点改进

请注意,按下按钮期间没有视觉反馈

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


您可以发布一两张示例图像吗?

您是否已经检查了MaskColor属性的使用情况?我没有,我现在将对此进行研究!非常感谢。在C winforms中没有这样的东西。请看如何在图像上动态书写文字抱歉,我太傻了,一开始没有添加此内容-背景并不总是一种纯色,我会想象这会使操作更加困难。有没有一种方法可以将文本周围的2/3像素设置为透明,以使其更可见?不幸的是,由于我的声誉,我无法发布图像。我将尝试一下,如果失败了,我将尝试将文本绘制到图像本身上。非常感谢您的帮助!好啊顺便说一句,有许多免费的地方,新用户可以张贴图像,如;即使没有代表,你仍然可以张贴网址…哦,当然,对不起,我没有想到这一点。我会记住这一点,以备将来参考。