C#非矩形图片盒

时间:2014-11-20 16:21:02

标签: c# transparency picturebox

有没有办法创建非矩形的pictureBoxes。我有圆形,应该重叠,如果可能的话应该在不同的图片框中。 我试过了this here,但你看不到两个一次重叠的图片框,只有一个......

这是我测试产生的图片: IMG http://i58.tinypic.com/wwj9jc.png

1 个答案:

答案 0 :(得分:1)

您可以通过向GraphicsPath添加椭圆,然后从中构建新Region来使PictureBoxes变为圆形。

这是一个简单的例子:

public class Target : PictureBox
{
    public Target()
    {
        this.Size = new Size(100, 100);
        this.Paint += Target_Paint;
        Rectangle rc = this.ClientRectangle;
        rc.Inflate(-10, -10);
        System.Drawing.Drawing2D.GraphicsPath gp = new System.Drawing.Drawing2D.GraphicsPath();
        gp.AddEllipse(rc);
        this.Region = new Region(gp);
    }

    void Target_Paint(object sender, PaintEventArgs e)
    {
        Rectangle rc = this.ClientRectangle;
        rc.Inflate(-10, -10);
        using (Pen pen = new Pen(Color.Blue, 5))
        {
            e.Graphics.DrawEllipse(pen, rc);
        }
        rc = new Rectangle(new Point(this.Size.Width / 2, this.Size.Height / 2), new Size(1, 1));
        rc.Inflate(9, 9);
        e.Graphics.FillEllipse(Brushes.Red, rc);
    }
}

编译完成后,新控件将显示在ToolBox的顶部。

这是一个屏幕截图,其中三个相互重叠: enter image description here