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

New*_*der 6 c# picturebox winforms

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

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

Jim*_*son 7

这一直是我用来做的:

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

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

为了动态更改边框颜色,例如从鼠标单击事件中,我使用图片框的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);
Run Code Online (Sandbox Code Playgroud)

然后,图片框 Click 事件将是这样的:

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();
        }
Run Code Online (Sandbox Code Playgroud)

你需要using System.Drawing;在开始时不要忘记pictureBox1.Refresh()在最后调用。享受!


Han*_*ant 5

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

设计师会尝试将控件与网格对齐,直接在"属性"窗口中编辑"位置"和"大小"属性而不是将其置于鼠标中,因此设计师会对您进行一些打击.


She*_*Pro 1

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