如何使用基于图片的形状创建PictureBoxes

时间:2014-12-17 16:37:17

标签: c# winforms picturebox shape

问题: 我有在白色背景上的对象的图片。 我需要具有这些对象的确切形状的PictureBox,但我不知道这些对象如何看起来像先验。

1 个答案:

答案 0 :(得分:1)

我对此的解决方案是一个新类:

class ShapedPictureBox : PictureBox
{
    public ShapedPictureBox()
    {

    }

    public Color transparentColor = Color.White;

    public void updateShape()
    {
    if(this.Image = null) return;
    Bitmap bitmap = new Bitmap(this.Image);
    System.Drawing.Drawing2D.GraphicsPath graphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
    for(int x = 0; x < this.Image.Width; x++)
        for(int y = 0; y < this.Image.Height; y++)
            if(transparentColor != bitmap.GetPixel(x, y))
                graphicsPath.AddRectangle(new Rectangle(new Point(x, y), new Size(1, 1)));
    this.Region = new Region(graphicsPath);
    }
}

无论何时使对象无效,都将重新创建形状。我知道这个解决方案根本没有效果,但它是我发现的唯一...我希望它有助于某人...

如果您有更好/更有效的想法,请告诉我。