一千萬個為什麽

搜索

如何制作非矩形Winforms?

我使用下面的代碼來改變winform的形狀。 它改變了形狀,但不像我想要的那樣。 我需要表格有彎角。

我應該用它來得到它?

    public void MakeNonRectangularForm()
    {
        System.Drawing.Drawing2D.GraphicsPath p = new System.Drawing.Drawing2D.GraphicsPath();
        int width = this.ClientSize.Width;
        int height = this.ClientSize.Height;
        p.AddClosedCurve(new Point[]{new Point(width/2, height/2), 
          new Point(width,0), new Point(width, height/3),
          new Point(width-width/3, height),
          new Point(width/7, height-height/8)});
        this.Region = new Region(p);
    }

最佳答案

以下是我之前用於創建圓邊的一些代碼,使用 AddArc 和行將邊框拼湊在一起:

(您可以使用 xRadiusyRadius 來實現所需的“舍入”量)

int xRadius = {insert value here};
int yRadius = {insert value here};

GraphicsPath edge = new GraphicsPath();

int rightHandLeft = this.Width - xRadius - 1;
int bottomSideTop = this.Height - yRadius - 1;

edge.AddArc(0, 0, xRadius, yRadius, 180, 90);
edge.AddLine(xRadius, 0, rightHandLeft, 0);

edge.AddArc(rightHandLeft, 0, xRadius, yRadius, 270, 90);
edge.AddLine(this.Width, yRadius, this.Width, bottomSideTop);

edge.AddArc(rightHandLeft, bottomSideTop, xRadius, yRadius, 0, 90);
edge.AddLine(rightHandLeft, this.Height, xRadius, this.Height);

edge.AddArc(0, bottomSideTop, xRadius, yRadius, 90, 90);
edge.AddLine(0, bottomSideTop, 0, yRadius);

this.Region = new Region(edge);

轉載註明原文: 如何制作非矩形Winforms?