如何创建菱形形状?

时间:2014-03-17 23:27:48

标签: c#

如何创建菱形形状? 我设法在这个的帮助下创建了一个椭圆形的形状:

private void Form1_Load(object sender, EventArgs e)
        {
            System.Drawing.Drawing2D.GraphicsPath myPath = new System.Drawing.Drawing2D.GraphicsPath();
            myPath.AddEllipse(45, 60, 200, 200);
            Region myRegion = new Region(myPath); 
            this.Region = myRegion;
        }

我怎么能做但是制作菱形?

2 个答案:

答案 0 :(得分:2)

使用myPath.AddLines代替myPath.AddEllipse

private void Form1_Load(object sender, EventArgs e)
{
    using (GraphicsPath myPath = new GraphicsPath())
    {
        myPath.AddLines(new[]
            {
                new Point(0, Height / 2),
                new Point(Width / 2, 0),
                new Point(Width, Height / 2),
                new Point(Width / 2, Height)
            });
        Region = new Region(myPath);
    }
}

答案 1 :(得分:0)

@Dmitry的回答对我帮助很大。然而,正如所声称的那样,它并没有画出完整的菱形。由于缺少最终点而未绘制最后一个段,该最终点必须与起点重合。线阵列应包含五个点,而不是四个点。

我做了一些修正并提出了这个函数,它绘制了一个带有给定矩形的菱形:

private void DrawRhombus(Graphics graphics, Rectangle rectangle)
{
  using (GraphicsPath myPath = new GraphicsPath())
  {
    myPath.AddLines(new[]
    {  
      new Point(rectangle.X, rectangle.Y + (rectangle.Height / 2)),
      new Point(rectangle.X + (rectangle.Width / 2), rectangle.Y),
      new Point(rectangle.X + rectangle.Width, rectangle.Y + (rectangle.Height / 2)),
      new Point(rectangle.X + (rectangle.Width / 2), rectangle.Y + rectangle.Height),
      new Point(rectangle.X, rectangle.Y + (rectangle.Height / 2))
    });
    using (Pen pen = new Pen(Color.Black, 1))
      graphics.DrawPath(pen, myPath);
  }
}