在一个Form里new了两个PictureBox,以这两个PictureBox的中心为两点,画一条直线,直线不能被PictureBox遮挡,这个要怎么做,

解决方案 »

  1.   

    PictureBox加载图片,再找到两个PictureBox的中心用Graphics的pen画条线吧? 
      

  2.   

        //思路,采用Graphics对象的draw方法。Graphic对象的句柄设置成PictureBox1和PictureBox2所属的窗体,这样就能覆盖两个pictureBox
            private void button1_Click(object sender, EventArgs e)
            {
                //声明Graphics对象类
                Graphics g = Graphics.FromHwnd(this.Handle);
                //声明pen类,设置画笔的颜色
                Pen pen = new Pen(Color.Green);
                //设置画线的起点和终点。
                Point p1 = new Point(this.pictureBox1.Location.X + this.pictureBox1.Size.Width / 2, this.pictureBox1.Location.Y + this.pictureBox1.Size.Height/ 2);
                Point p2 = new Point(this.pictureBox2.Location.X + this.pictureBox2.Size.Width / 2, this.pictureBox2.Location.Y + this.pictureBox2.Size.Height / 2);
                //画线
                g.DrawLine(pen, p1, p2);
                
                
            }
      

  3.   

    画不出来的, pictureBox会盖住一切东西。
      

  4.   

         //(1)代码使用前提,在主窗体上添加两个picturebox,分别命名为picturebox1,picturebox2
            //在主窗体上添加一个按钮,名为button1
            
            //(2)思路,PictureBox对象总是能覆盖Graphics对象,所以需要用Picture对象来充当“直线”。
            //使用picturebox.BringToFront()方法来将“直线”覆盖其他两个PictureBox
            private void button1_Click(object sender, EventArgs e)
            {
                //充当直线的PictureBox
                PictureBox p = new PictureBox();
                
                //设置“直线”的起点是pictureBox1的中点
                p.Location = new System.Drawing.Point(pictureBox1.Location.X + pictureBox1.Size.Width / 2, pictureBox1.Location.Y + pictureBox1.Size.Height / 2);
                
                //设置“直线”的长度是从pictureBox2中点到pictureBox1的中点的距离。
                //设置"直线"的宽度是5
                p.Size = new System.Drawing.Size(pictureBox2.Location.X + pictureBox2.Size.Width / 2 - pictureBox1.Location.X - pictureBox1.Size.Width / 2, 5);
                
                //设置“直线”的颜色是 红色
                p.BackColor = Color.Red;
                //将“直线”添加到窗体上
                this.Controls.Add(p);            //将“直线”移动到窗体最上方,覆盖掉另外两个pictureBox
                p.BringToFront();   
            }//(3)效果如下所示
    http://hi.csdn.net/attachment/201101/2/7085318_12939803589ZI0.jpg