读书人

GDI+简单绘图的实例

发布时间: 2013-07-01 12:33:04 作者: rapoo

求一个GDI+简单绘图的实例
使用控件pictureBox1或者Panel上 做出如下效果
1:鼠标左键点击一次在上述空间上绘制一个点
2:以这个点为起始坐标当鼠标MouseUp后就出现一条直线 直线的结尾坐标为鼠标移动的坐标
3:确认结尾坐标后 单击鼠标然后在这俩个点之间形成一条直线
求一个类似的简单的例子 网上找了一大堆 不是我想要的 GDI+ 鼠标 实例
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

给的是大概思路 你需要自己加东西的


private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
IsDraw = true;
StartPoint = new Point(e.X, e.Y);
}
else
{
Graphics g = this.pictureBox1.CreateGraphics();
g.Clear(this.BackColor);
}
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
this.Text = string.Format("X:{0},Y:{1}", e.X, e.Y);


if (IsDraw)
{

Graphics g = null;
pen = new Pen(color, 1);
EndPoint = new Point(e.X, e.Y);
g = this.pictureBox1.CreateGraphics();
Point newPoint = new Point(StartPoint.X, StartPoint.Y);
g.DrawLine(pen, StartPoint, EndPoint);
g.Dispose();
pen.Dispose();
}
}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
IsDraw = false;
}


为什么我这个画出来好多重复的线都出来了 不是只有一条线跟着鼠标轨迹走 是不是我少加了什么东西


绘图 和 鼠标操作 要分开 鼠标事件处理程序只负责修改属性值(比如MyLine的X2、Y2的值) Paint事件处理程序中才是绘图的地方。。。
绘图不能放在MouseMove中 你这样画出来的线 窗体最小化后 就没了
按照我 #1 中给出代码

嗯,绘出的直线可以得到这个直线的属性嘛 距离? 还是通过俩个坐标去计算


这个就要看你怎么去实现你的 MyLine 这个类啦 距离什么的都得自己去计算

class MyLine
{
// ...
public int Distance
{
get
{
return 计算的结果;
}
}
}

OK 谢谢你了,麻烦再问一下 比如说我把直线画出来后 在直线的俩边垂直90度在加俩条直线 以画出线上的一个坐标的为起点 画出限定距离的箭头线 箭头线我知道怎么画了 就是不知道我这个方案是不是很麻烦



以线的两个端点为中心 再次画线
class MyLine
{
int x1,y1;
int x2,y2;
public void Draw(Graphics g)
{
g.DrawLine(...); //按照坐标画线
// 以(x1 y1) (x2 y2)再次画线 至于什么形状 你自己设计 有时候可能需要用到数学知识 比如箭头之间的夹角
}
}

读书人网 >C#

热点推荐