如何清除矩形的填充?我只想保留边界。
g.FillRectangle(Brushes.Transparent, x, y, w, h);
没有用,带 alpha 的 aRGB 也没有,我想删除填充,所以只剩下边框了。
所以你想要的是
g.DrawRectangle(Pens.Black,x,y,w,h);
我认为
编辑:由于 OP 要求的变化,这并不完全是他想要的答案,尽管它不是不正确的,因此我选择暂时将其留在这里。
设置剪辑清除后,您必须为图形设置新剪辑,然后将剪辑恢复正常。
g.SetClip(new Rectangle(x,y,w,h), CombineMode.Replace);
g.Clear(Color.Transparent);
好的,所以您正在使用选择工具,您可能想首先告诉我们。
创建一个新的窗体应用程序。
在表单事件中使用 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();
}
这段代码并不完美,我也不假装它是完美的。这将做的是绘制一个蓝色矩形,从您单击的位置开始并跟随鼠标。它不会绘制负矩形,您必须确定您的鼠标当前是在起点的左侧还是上方,然后相应地绘制矩形,但我认为您可以自己弄清楚。矩形也不是持久的,尽管我不相信你会想要它。