| 发表于: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); } } | | |
|