1

ICパッケージの上面図を描画しようとしています。これは次のようになります(Windowsのペイントを使用しても十分に描画できませんでした!)

ここに画像の説明を入力してください

パスオブジェクトを使用していますが、パスオブジェクトの結果が期待したものに近くありません。少なくとも完全な長方形自体はうまく描画されますが、私の例の画像に表示されている上部の円弧を作成するのに問題があります。あなたが私を正しい場所に向けることができればいいでしょう。これが私のコードです:

    private GraphicsPath DrawDilBounds(Size size)
    {
        var p = new GraphicsPath(FillMode.Alternate);
        p.StartFigure();
        p.AddLine(0, 0, 0, size.Height);
        p.AddLine(0, size.Height, size.Width, size.Height);
        p.AddLine(size.Width, size.Height, size.Width, 0);
        p.AddLine(size.Width, 0, (size.Width/2) - 10, 0);
        p.AddArc(size.Width/2 - 10, 0, 10, 10, 10, 10); //This arc looks like no arc!
        p.AddLine((size.Width/2) + 10, 0, 0, 0);
        p.CloseFigure();

        return p;
    }

したがって、ここで行っているのは、左上隅から左下隅、右下隅、最後に右上隅までの行を開始し、右上隅から上部の中央まで、マイナス10ピクセルの行を追加することです。次に、幅20ピクセルの円弧を追加して、左上隅に描画を終了します。

4

1 に答える 1

3

円弧は、境界ボックスで指定します。半径として10を使用すると、左上隅が円弧の中心から(-10、-10)にある20 x 20(10 x 10を使用)のボックスが得られます((-10、0)を使用)。最後の2つの引数は、開始角度と終了角度である度でなければなりません。左から右に描くので、0度と180度になります(10度と10度を使用しました)。また、上部の2本の線の長さを調整しました。幅-10の半分にする必要があります(+10を使用しました)。修理:

        p.AddLine(size.Width, 0, (size.Width / 2) + 10, 0);
        p.AddArc(size.Width / 2 - 10, -10, 20, 20, 0, 180);
        p.AddLine((size.Width / 2) - 10, 0, 0, 0);

それはあなたを得る:

ここに画像の説明を入力してください

于 2012-08-14T12:07:31.943 に答える