您的位置:程序门 -> .net技术 -> c#



绘制直线的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


绘制直线的问题[已结贴,结贴人:xmlchina31]
发表于:2007-08-30 09:47:39 楼主
怎么写能象   “附件”-“画图”   里面的“画直线”那样效果。
总是乱跑。谢谢了。
发表于:2007-08-30 09:53:521楼 得分:10
是webform还是winform的?
webform的话用vml+js
winform的话用gdi就行了。
发表于:2007-08-30 09:57:482楼 得分:60
我和vs2005做了一个画线的,楼主有兴趣可以参考一下:

public   partial   class   drawline   :   form
{
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> ();
public   drawline()
{
initializecomponent();
this.setstyle(controlstyles.allpaintinginwmpaint   ¦   controlstyles.userpaint   ¦   controlstyles.optimizeddoublebuffer,   true);
}
private   void   drawline(graphics   g,   point   startpoint,   point   endpoint)
{
bufferedgraphicscontext   context   =   bufferedgraphicsmanager.current;
bufferedgraphics   bg   =   context.allocate(g,   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;
}
protected   override   void   onpaint(painteventargs   e)
{
base.onpaint(e);
foreach   (lineobj   line   in   this.linelist)
{
line.draw(e.graphics,   systempens.controltext);
}
}
protected   override   void   onmousedown(mouseeventargs   e)
{
base.onmousedown(e);
this.m_startpoint   =   new   point(e.x,   e.y);
}
protected   override   void   onmousemove(mouseeventargs   e)
{
base.onmousemove(e);
if   (e.button   ==   mousebuttons.left)
{
this.drawline(this.creategraphics(),   this.m_startpoint,   new   point(e.x,   e.y));
}
}
protected   override   void   onmouseup(mouseeventargs   e)
{
base.onmouseup(e);
lineobj   line   =   new   lineobj(this.m_startpoint,   e.location);
this.linelist.add(line);
}
}
发表于:2007-08-30 09:58:463楼 得分:30
http://topic.csdn.net/t/20030107/09/1333570.html


快速检索

最新资讯
热门点击