C# 为图片框提供图像的形状

本文关键字:图像 | 更新日期: 2023-09-27 18:34:31

我想给一个图片框一个我拥有的图像的形状。偏离路线的图像是矩形的,但应该忽略背景颜色,这导致了所需的形式。因此,如果有一张白色背景上的香蕉图片,我应该在最后有一个香蕉形状的图片盒。这是必需的,以便我可以在AxWMPLib媒体播放器前面移动形状的PictureBox,而不会让香蕉周围的矩形覆盖所有视频。

我的方法是创建一个扩展 PictureBox 的新类,然后将区域设置为形状。问题是,我不知道如何获得形状。

class ShapedPBox : PictureBox
{
    public ShapedPBox()
    {
         this.Paint += this.shapedPaint;
    }
    void shapedPaint(object sender, paintEventArgs e)
    {
        System.Drawing.Drawing2D.GraphicsPath gP = new System.Drawing.Drawing2D.GraphicsPath();
        //do something to give gP.addPicture? perhaps something with transparency key?
        this.Region = new Region(graphicsPath);
    }
    public Image image;
}

C# 为图片框提供图像的形状

您可以将

PictureBoxSizeMode属性设置为StretchImage,这将删除默认的背景颜色。当然,图像会根据图像和控件大小缩小或增大。

如果您无法调整图像大小并且您知道背景的位置,则可以使用以下代码。它所做的只是从图像边缘获取颜色并将其设置为图片框的背景颜色。

Image image = Image.FromFile(@"c:'Image.png");
Bitmap bitmap = new Bitmap(image);
pictureBox1.BackColor = bitmap.GetPixel(0, 1);
pictureBox1.Image = image;