PictureBox.CreateGraphics()跟e.Graphics
PictureBox.CreateGraphics()和e.Graphics
就是这个怎么画一个网格线然后给了现在的picturebox。条件是网格线是可以控制加还是不加的。
------解决思路----------------------
1、告诉pictureBox在显示图片后,还要进行‘后期’绘画,这里可以用pictureBox的Paint事件。
2、使用一个标志,来指示是否在‘后期’绘画中加网格线。
3、如果标志改变,要求pictureBox进行刷新,以显示最新变动。
4、画网格线可以用Graphics.DrawLine。
------解决思路----------------------
对ls代码提一点改进
bool gridVisible = true;
这个可以定义一个属性:
public bool ShowGridLine
{
get { return gridVisible; }
set { gridVisible = value; }
}
------解决思路----------------------
然后在set方法里判断value是否变化,没变化不重新赋值,变化了就刷新picture
就是这个怎么画一个网格线然后给了现在的picturebox。条件是网格线是可以控制加还是不加的。
------解决思路----------------------
1、告诉pictureBox在显示图片后,还要进行‘后期’绘画,这里可以用pictureBox的Paint事件。
2、使用一个标志,来指示是否在‘后期’绘画中加网格线。
3、如果标志改变,要求pictureBox进行刷新,以显示最新变动。
4、画网格线可以用Graphics.DrawLine。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.pictureBox1.Paint += pictureBox1_Paint; // 1
}
void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (!this.gridVisible) return;
Rectangle rect = this.pictureBox1.ClientRectangle;
float gridWidth = (rect.Width - 1f) / (gridLines - 1);
float gridHeith = (rect.Height - 1f) / (gridLines - 1);
for(int i = 0; i < gridLines; i++) // 4
{
e.Graphics.DrawLine(Pens.Red, rect.Left, gridHeith * i, rect.Right, gridHeith * i);
e.Graphics.DrawLine(Pens.Red, gridWidth * i, rect.Top, gridWidth * i, rect.Bottom);
}
}
bool gridVisible = true;
const int gridLines = 4;
private void button1_Click(object sender, EventArgs e)
{
gridVisible = !gridVisible; // 1
this.pictureBox1.Invalidate(); // 2
}
}
------解决思路----------------------
对ls代码提一点改进
bool gridVisible = true;
这个可以定义一个属性:
public bool ShowGridLine
{
get { return gridVisible; }
set { gridVisible = value; }
}
------解决思路----------------------
然后在set方法里判断value是否变化,没变化不重新赋值,变化了就刷新picture