2

長方形の塗りつぶしをクリアするにはどうすればよいですか? 私は国境を守りたいだけです。

g.FillRectangle(Brushes.Transparent, x, y, w, h);

機能しませんでした。アルファ付きのaRGBも機能しませんでした。塗りつぶしを削除したいので、境界線だけが残ります。

4

3 に答える 3

5

だからあなたが欲しいのは

g.DrawRectangle(Pens.Black,x,y,w,h);

おもう

編集:OP要件の変更により、これは彼が望んでいる答えではありませんが、間違っているわけではないため、今のところここに残すことにしました。

于 2012-05-08T17:54:43.657 に答える
3

セット クリップをクリアした後、グラフィックに新しいクリップを設定してから、クリップを通常の状態に戻す必要があります。

g.SetClip(new Rectangle(x,y,w,h), CombineMode.Replace);
g.Clear(Color.Transparent);
于 2015-01-10T11:59:03.990 に答える
1

わかりましたので、あなたは選択ツールを求めています。そもそもそれを私たちに伝えたかったのかもしれません。

新しい Windows フォーム アプリケーションを作成します。

フォーム イベントでは、mousedown、mouseup、および mousemove を使用します

public Point MouseXY = new Point(0, 0);

private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        MouseXY = e.Location;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            int width = e.Location.X - MouseXY.X;
            int height = e.Location.Y-MouseXY.Y;
            this.Refresh();
            CreateGraphics().DrawRectangle(Pens.Blue, new Rectangle(MouseXY, new Size(width,height)));

        }
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        this.Refresh();
    }

このコードは完璧ではありません。これにより、クリックした場所から始まり、マウスをたどる青い四角形が描画されます。負の四角形を描画しません。マウスが現在開始点から左にあるか上にあるかを判断し、それに応じて四角形を描画する必要がありますが、自分でそれを理解できると思います。同様に、長方形は永続的ではありませんが、あなたがそれを望んでいるとは思いません。

于 2012-05-08T18:26:59.017 に答える