如何更改图片框(winform)的边框颜色?

时间:2011-03-13 16:10:01

标签: c# winforms picturebox

我想根据不同的事件打开和关闭图片框周围的边框颜色/样式。

是否有可以帮助我实现这一目标的属性或功能?

4 个答案:

答案 0 :(得分:5)

Winforms不允许您更改控件的边框颜色,它们由用户选择的主题修复。获得所需内容的最简单方法是不需要编写自己的控件,将图片框放在Panel中,使其略小一些。然后只需更改面板的BackColor。

设计师会因为它试图将控件与网格对齐而直接编辑“属性”窗口中的“位置”和“大小”属性而不是将其混合而对你有所帮助。

答案 1 :(得分:4)

这一直是我用来做的:

要更改边框颜色,请从Picturebox控件的Paint事件处理程序中调用此颜色:

private void pictureBox1_Paint_1(object sender, PaintEventArgs e)
    {
        ControlPaint.DrawBorder(e.Graphics, pictureBox1.ClientRectangle, Color.Red, ButtonBorderStyle.Solid);
    }

要动态更改边框颜色,例如从鼠标点击事件,我使用图片框的Tag属性来存储颜色并调整图片框的Click事件以从那里检索它。例如:

  if (pictureBox1.Tag == null) { pictureBox1.Tag = Color.Red; } //Sets a default color
  ControlPaint.DrawBorder(e.Graphics, pictureBox1.ClientRectangle, (Color)pictureBox1.Tag, ButtonBorderStyle.Solid);

图片框点击事件,然后会是这样的:

private void pictureBox1_Click(object sender, EventArgs e)
        {
            if ((Color)pictureBox1.Tag == Color.Red) { pictureBox1.Tag = Color.Blue; }
            else {pictureBox1.Tag = Color.Red; }
            pictureBox1.Refresh();
        }

您在开始时需要using System.Drawing;,并且不要忘记最后致电pictureBox1.Refresh()。享受!

答案 2 :(得分:2)

这是一个simple example(在VB.NET中,但转换起来应该很简单),它可以帮到你。你不必担心像Passant那样使用额外的面板。

答案 3 :(得分:1)

如果您正在谈论鼠标事件,则可以使用MouseEnter和MouseLeave或MouseHover事件来执行此操作,并可以使用 OnPaint 事件进行实际绘图。只是使上面提到的鼠标事件或您关心的任何事件上的PictureBox无效。