想繪制一個矩形框 繪制出來的怎么是實心矩形
public void StartGraphics(Point start, Point end)
{
Graphics g = Graphics.FromImage(pcb.Image);
Pen p = new Pen(Color.Red, 3);
float width = end.X - start.X;
float height = end.Y - start.Y;
g.DrawRectangle(p, start.X, start.Y, width, height);
//g.DrawLine(p, start_point,new Point(end_point.X,start_point.Y));
//g.DrawLine(p, start_point, new Point(start_point.X, end_point.Y));
//g.DrawLine(p, end_point, new Point(end_point.X, start_point.Y));
//g.DrawLine(p, end_point, new Point(start_point.X, end_point.Y));
pcb.Invalidate();
}
private void Pcb_MouseEnter(object sender, EventArgs e)
{
pcb.Cursor = Cursors.Cross;
}
Point start_point;//相對于pcb的坐標
Point end_point;//相對于pcb的坐標
bool m_down=false;
private void Pcb_MouseDown(object sender, MouseEventArgs e)
{
m_down = true;
Point pcb_top_point = new Point(0, pcb.Top);
Point fm_point = this.PointToClient(Control.MousePosition);
start_point.Y = fm_point.Y - pcb_top_point.Y;//真實的滑鼠起始位置要算上視窗滑鼠位置+pcb離form.top的距離
start_point.X = fm_point.X;//X軸無變化
}
private void Pcb_MouseUp(object sender, MouseEventArgs e)
{
Point pcb_top_point = new Point(0, pcb.Top);
Point fm_point = this.PointToClient(Control.MousePosition);
end_point.Y = fm_point.Y - pcb_top_point.Y;//真實的滑鼠起始位置要算上視窗滑鼠位置+pcb離form.top的距離
end_point.X = fm_point.X;//X軸無變化
m_down = false;
}
private void Pcb_Paint(object sender, PaintEventArgs e)
{
}
private void Pcb_MouseMove(object sender, MouseEventArgs e)
{
if (m_down==false)//如果中途松開了滑鼠左鍵 則放棄繪制
{
return;
}
else
{
Point pcb_top_point = new Point(0, pcb.Top);
Point fm_point = this.PointToClient(Control.MousePosition);
end_point.Y = fm_point.Y - pcb_top_point.Y;//真實的滑鼠起始位置要算上視窗滑鼠位置+pcb離form.top的距離
end_point.X = fm_point.X;//X軸無變化
StartGraphics(start_point, end_point);
}
}
uj5u.com熱心網友回復:
DrawRectangle 和 FillRectangle的區別uj5u.com熱心網友回復:
不是這樣的 我知道這兩個的區別 關鍵是在MouseMove事件下 graphics一直在繪圖就向這樣

而我想達到的目的是

能隨著滑鼠的拖動而變化
uj5u.com熱心網友回復:
重繪的不對!uj5u.com熱心網友回復:
onpaint 方法下話 然后 確定 滑鼠的 資訊。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/117650.html
標籤:C#
