繁体   English   中英

如何在 PictureBox 控件上创建彩色边框?

[英]How Do I Create a Colored Border on a PictureBox Control?

我在PictureBox1.Image属性中有一个 PictureBox 和一个 Image。
如何在图像周围放置边框?

这一直是我用来做的:

要更改边框颜色,请从 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);

然后,图片框 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();
        }

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

您无法设置PictureBox边框的大小和颜色。
但是你可以做一个小技巧来做到这一点。

将您的图像设置为BackgroundImage属性。
BackgroundImageLayout设置为Center
BackColor属性更改为您希望边框的颜色。
现在调整PictureBox大小以显示背景颜色,现在它在视觉上就像一个边框。

您还可以使用Padding属性来完成最后一步。

希望有帮助。

您可以通过继承System.Windows.Forms.PictureBox并覆盖PictureBox类的OnPaint方法来创建自己的 PictureBox,从这里使用System.Windows.Forms.ControlPaint类使用“DrawBorder”方法绘制自定义边框并传入来自“OnPaint”方法的“System.Windows.Forms.PaintEventArgs”。

像这样的东西;

using System.Windows.Forms;
using System.Drawing;

public class CustomPictureBox : PictureBox
{
  protected override void OnPaint(PaintEventArgs e) 
  {
    base.OnPaint(e);
    ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Red, ButtonBorderStyle.Solid);
  }
}

这只是一个让您入门的快速示例(未经测试),抱歉,我不能更彻底。

我来这里是因为我面临着同样的问题。 我指出了一个更简单的解决方案,那就是。

  1. 在图片picturebox后面放置一个label
  2. label的背景颜色更改为所需边框的颜色。
  3. labelAutoSize属性设置为false并根据需要调整label大小。

样品:

在此处输入图片说明

为了实现这个目标,我使用了一个带有背景图像的按钮并设置了 FlatApparence 属性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM