refer:http://blog.csdn.net/zjq2010014137/article/details/18270143
http://www.cnblogs.com/zihuatanejo/articles/1392689.html
http://www.cnblogs.com/stg609/archive/2008/03/30/1129221.html
http://blog.sina.com.cn/s/blog_74992bfa0100zpzp.html
在Form上添加 一个pictureBox
private Point p1, p2;//定义两个点(启点,终点)
private static bool drawing=false;//设置一个启动标志
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
p1 = new Point(e.X, e.Y);
p2 = new Point(e.X, e.Y);
drawing = true;
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
drawing = false;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();
if(e.Button ==MouseButtons.Left)
{
if (drawing)
{
//drawing = true;
Point currentPoint = new Point(e.X, e.Y);
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//消除锯齿
g.DrawLine(new Pen(Color.Blue, 2), p2,currentPoint);
p2.X = currentPoint.X;
p2.Y = currentPoint.Y;
}
}
}
清屏:(控件内)
Graphics g = pictureBox1.CreateGraphics();
g.Clear(Color.White);
我想对于初学者来说如何消去第一次绘制的图片是个比较困难的问题.如果没有采取措施,你会发现只要你鼠标移动,就会画一个矩形,这样便会出现N多的矩形,而我们只是要最后的那一个.
一般解决这种问题的方法有两种:
1.就是在绘制第二个图形时,我们先用与底色相同的颜色将上次绘制的图形重新绘制一下.但这往往需要底色为纯色时使用.
2.我们并不直接将图形画在画板上,我们用一个图片A来保存原画板上的图片.然后再新建一个与图片A相同的图片B,将我们要绘制的图形画在该图片B上,然后再将该图片B画在画板上.这样图片A并没有被改变.于是第二次画的时候我们还是同样新建一个与图片A相同的图片进行绘制.那么上一次的图形就不会被保留下来.问题也就解决了.
如果要在pictureBox上面画图,那就要在这个控件的事件的paint上进行画图
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 2);
//画线示例
g.DrawLine(p, 450, 0, 450, 600);
g.DrawLine(p, 0, 300, 900, 300);
// 写文本示例
g.DrawString("-4 -3 -2 -1 0 1 2 3 4",
new Font("Arial", 20, FontStyle.Bold | FontStyle.Italic),
SystemBrushes.ActiveCaptionText,
new PointF(100, 300));
画正弦曲线
int Zoom = 150; //放大倍数
Point center = new Point(250, 300); //原点
float x1 = (float)(0 * Math.PI * Zoom / 180 + center.X);
float y1 = (float)(Math.Sin(0 * Math.PI / 180) * Zoom + center.Y);
for (int i = 1; i < 360 * 5; i++) //角
{
float x2 = (float)(i * Math.PI * Zoom / 180 + center.X);
float y2 = (float)Math.Sin(i * Math.PI / 180) * (-1) * Zoom + center.Y;
g.DrawLine(p, x1, y1, x2, y2);
x1 = x2;
y1 = y2;
}
绘图软件 源代码