如何在Panel上画出直线?
public class LineObj
{
private Point m_start;
private Point m_end;
public LineObj(Point start,Point end)
{
this.m_start = start;
this.m_end = end;
}
public void draw(Graphics g, Pen pen)
{
g.DrawLine(pen,m_start,m_end);
}
}
private Point m_startPoint = Point.Empty;
List<LineObj> lineList = new List<LineObj>();
private void drawLine(Graphics graphics, Point startPoint, Point endPoint)
{
BufferedGraphicsContext context = BufferedGraphicsManager.Current;
BufferedGraphics bg = context.Allocate(graphics,this.ClientRectangle);
bg.Graphics.Clear(this.BackColor);
foreach(LineObj line in this.lineList)
{
line.draw(bg.Graphics,SystemPens.ControlText);
}
bg.Graphics.DrawLine(SystemPens.ControlText,startPoint,endPoint);
bg.Render();
bg.Dispose();
bg = null;
}
private void onPaint(object sender, PaintEventArgs e)
{
foreach(LineObj line in this.lineList)
{
line.draw(e.Graphics,SystemPens.ControlText);
}
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
// base.OnMouseDown(e);
this.m_startPoint = new Point(e.X,e.Y);
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
//base.OnMouseMove(e);
if(e.Button==MouseButtons.Left)
{
this.drawLine(this.CreateGraphics(),m_startPoint,new Point(e.X,e.Y));
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
//base.OnMouseUp(e);
LineObj line = new LineObj(this.m_startPoint,e.Location);
this.lineList.Add(line);
这个它不会显示出画在panel上的直线,只会有画在窗体上的直线,该如何修改呢?
{
private Point m_start;
private Point m_end;
public LineObj(Point start,Point end)
{
this.m_start = start;
this.m_end = end;
}
public void draw(Graphics g, Pen pen)
{
g.DrawLine(pen,m_start,m_end);
}
}
private Point m_startPoint = Point.Empty;
List<LineObj> lineList = new List<LineObj>();
private void drawLine(Graphics graphics, Point startPoint, Point endPoint)
{
BufferedGraphicsContext context = BufferedGraphicsManager.Current;
BufferedGraphics bg = context.Allocate(graphics,this.ClientRectangle);
bg.Graphics.Clear(this.BackColor);
foreach(LineObj line in this.lineList)
{
line.draw(bg.Graphics,SystemPens.ControlText);
}
bg.Graphics.DrawLine(SystemPens.ControlText,startPoint,endPoint);
bg.Render();
bg.Dispose();
bg = null;
}
private void onPaint(object sender, PaintEventArgs e)
{
foreach(LineObj line in this.lineList)
{
line.draw(e.Graphics,SystemPens.ControlText);
}
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
// base.OnMouseDown(e);
this.m_startPoint = new Point(e.X,e.Y);
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
//base.OnMouseMove(e);
if(e.Button==MouseButtons.Left)
{
this.drawLine(this.CreateGraphics(),m_startPoint,new Point(e.X,e.Y));
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
//base.OnMouseUp(e);
LineObj line = new LineObj(this.m_startPoint,e.Location);
this.lineList.Add(line);
这个它不会显示出画在panel上的直线,只会有画在窗体上的直线,该如何修改呢?
...全文
相关推荐
Delphi Panel 上画直线的Demo
Delphi Panel 上画直线的Demo
C#关于跨Panel控件完成控件之间连接直线功能的实现
作者:天亮以前说爱你 本代码使用VS2008开发,经过本人亲自测试可用,支持免费下载,只为资源共享和技术交流,本人能力有限,只为实现功能,重构方面没有做过多设计,希望能帮到需要的这方面资源的朋友.
c#用于在窗体上画直线的类
c#用于在窗体上画直线的类,对于临时的打印操作有一定的帮助。
C#带背景绘图,拖鼠标画矩形和直线
C#的pictureBox上绘图,带背景,有橡皮筋效果,实现画矩形和直线,图片可保存。 开发环境:Visual Studio 2012(.net framework 4.5)
在panel中画X,Y轴,并分轴。
有的人在panel内不会画X,Y轴或者画的不对,这个代码可以帮助你。


