当前位置: 代码迷 >> .NET组件控件 >> 关于c#画线解决思路
  详细解决方案

关于c#画线解决思路

热度:1664   发布时间:2013-02-25 00:00:00.0
关于c#画线
C# code
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Drawing.Drawing2D;namespace WindowsFormsApplication3{    public partial class Form1 : Form    {        private PointF current;        private PointF movepf;        public Form1()        {            InitializeComponent();        }        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)        {            current = e.Location;                         }        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)        {            movepf = e.Location;            Invalidate();        }        protected override void OnPaint(PaintEventArgs e)        {            Bitmap mp = new Bitmap(pictureBox1.Width, pictureBox1.Height);            Pen pen = new Pen(Color.Blue);            SolidBrush drawBrush = new SolidBrush(Color.Black);            using (Graphics g = Graphics.FromImage(mp))            {              g.DrawImage(mp, pictureBox1.ClientRectangle.X, pictureBox1.ClientRectangle.Y);                g.DrawLine(pen, current, movepf);                PointF pt1 = new PointF();                pt1.X = (current.X + movepf.X) / 2;                pt1.Y = (current.Y + movepf.Y) / 2;                g.DrawString("12345", this.Font, drawBrush, pt1);                using (Graphics gg = this.CreateGraphics())                {                    gg.DrawImage(mp, pictureBox1.ClientRectangle.X, pictureBox1.ClientRectangle.Y);                }            }            base.OnPaint(e);        }    }}






就是想知道 我这样画线, 就一个窗体一个picturebox ,我想在picturebox里面画线,可是线条老出在form上面 怎么办呢

------解决方案--------------------------------------------------------
protected override void OnPaint(PaintEventArgs e)

这句是Form的Paint事件,你不觉得理所当然是画在窗体上吗。

你应该自己写个方法
private void pictureBoxPaint(object sender, PaintEventArgs e)

然后关联给你的pictureBox1.Paint事件
------解决方案--------------------------------------------------------
问题出在你用的Graphics是Form的(this.CreateGraphics()),用PictureBox的就可以画到PictureBox中了。不过效果估计不是你想要的。

代码改成如下的样子就可以了:
C# code
using (Graphics gg = Graphics.FromHwnd(pictureBox1.Handle)) //this.CreateGraphics())
  相关解决方案