長方形の塗りつぶしをクリアするにはどうすればよいですか? 私は国境を守りたいだけです。
g.FillRectangle(Brushes.Transparent, x, y, w, h);
機能しませんでした。アルファ付きのaRGBも機能しませんでした。塗りつぶしを削除したいので、境界線だけが残ります。
だからあなたが欲しいのは
g.DrawRectangle(Pens.Black,x,y,w,h);
おもう
編集:OP要件の変更により、これは彼が望んでいる答えではありませんが、間違っているわけではないため、今のところここに残すことにしました。
セット クリップをクリアした後、グラフィックに新しいクリップを設定してから、クリップを通常の状態に戻す必要があります。
g.SetClip(new Rectangle(x,y,w,h), CombineMode.Replace);
g.Clear(Color.Transparent);
わかりましたので、あなたは選択ツールを求めています。そもそもそれを私たちに伝えたかったのかもしれません。
新しい 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();
}
このコードは完璧ではありません。これにより、クリックした場所から始まり、マウスをたどる青い四角形が描画されます。負の四角形を描画しません。マウスが現在開始点から左にあるか上にあるかを判断し、それに応じて四角形を描画する必要がありますが、自分でそれを理解できると思います。同様に、長方形は永続的ではありませんが、あなたがそれを望んでいるとは思いません。