首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

GDI+简单绘图的实例

2013-07-01 
求一个GDI+简单绘图的实例使用控件pictureBox1或者Panel上 做出如下效果1:鼠标左键点击一次在上述空间上绘

求一个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)再次画线  至于什么形状  你自己设计  有时候可能需要用到数学知识  比如箭头之间的夹角 
    }
}

热点排行