C#画直线实现实例解析

C#画直线的操作有的时候我们会在实际开发遇到这样的需求,那么C#画直线是如何实现的呢?这里我们来看看具体的实现代码,通过代码的介绍希望对你的开发有所帮助。

临江网站建设公司成都创新互联公司,临江网站设计制作,有大型网站制作公司丰富经验。已为临江近千家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的临江做网站的公司定做!

C#画直线实现实例:

 
 
 
  1. //以下是完整代码,可以直接编译运行 
  2. //-----C#画直线--------- 
  3. using System; 
  4. using System.Collections.Generic; 
  5. using System.Windows.Forms; 
  6. using System.Drawing; 
  7. namespace q2 
  8. static class Program 
  9. /// ﹤summary﹥ 
  10. /// 应用程序的主入口点。 
  11. /// ﹤/summary﹥ 
  12. [STAThread] 
  13. static void Main() 
  14. Application.EnableVisualStyles(); 
  15. Application.SetCompatibleTextRenderingDefault(false); 
  16. Application.Run(new Form1()); 
  17. /// ﹤summary﹥ 
  18. /// 线条对象 
  19. /// ﹤/summary﹥ 
  20. class Line 
  21. /// ﹤summary﹥ 
  22. /// 建立线条对象,并设置起点 
  23. /// ﹤/summary﹥ 
  24. /// ﹤param name="startPoint"﹥此线条的起点﹤/param﹥ 
  25. public Line(Point startPoint) 
  26. StartPoint = startPoint; 
  27. EndPoint = startPoint; 
  28. public Point StartPoint = Point.Empty; 
  29. public Point EndPoint = Point.Empty; 
  30. public class DrawPanel : Control 
  31. public DrawPanel() 
  32. this.DoubleBuffered = true; 
  33. this.SetStyle(
  34. ControlStyles.OptimizedDoubleBuffer | 
  35. ControlStyles.ResizeRedraw, true); 
  36. /// ﹤summary﹥ 
  37. /// C#画直线之窗口定义 
  38. /// ﹤/summary﹥ 
  39. public class Form1 : Form 
  40. public Form1() 
  41. drawPanel.BackColor = Color.White; 
  42. drawPanel.Cursor = Cursors.Cross; 
  43. drawPanel.Dock = DockStyle.Fill; 
  44. drawPanel.MouseDown += 
  45. new MouseEventHandler(drawPanel_MouseDown); 
  46. drawPanel.MouseUp += 
  47. new MouseEventHandler(drawPanel_MouseUp); 
  48. drawPanel.MouseMove += 
  49. new MouseEventHandler(drawPanel_MouseMove); 
  50. drawPanel.Paint += 
  51. new PaintEventHandler(drawPanel_Paint); 
  52. Controls.Add(drawPanel); 
  53. /// ﹤summary﹥ 
  54. /// C#画直线之用于保存绘出线条的集合 
  55. /// ﹤/summary﹥ 
  56. private List﹤Line﹥ lines = new List﹤Line﹥(); 
  57. /// ﹤summary﹥ 
  58. /// 用于保存当前正在绘制的线条 
  59. /// ﹤/summary﹥ 
  60. private Line drawingLine = null; 
  61. /// ﹤summary﹥ 
  62. /// 用于显示绘图的面板组件 
  63. /// ﹤/summary﹥ 
  64. private DrawPanel drawPanel = new DrawPanel(); 
  65. /// ﹤summary﹥ 
  66. /// 在绘图区释放鼠标,结束当前线条绘制 
  67. /// ﹤/summary﹥ 
  68. /// ﹤param name="sender"﹥﹤/param﹥ 
  69. /// ﹤param name="e"﹥﹤/param﹥ 
  70. void drawPanel_MouseUp(object sender, MouseEventArgs e) 
  71. if (drawingLine == null) return; 
  72. drawingLine.EndPoint = e.Location; 
  73. drawingLine = null; 
  74. /// ﹤summary﹥ 
  75. /// 在绘图区按下鼠标,开始绘制新线条 
  76. /// ﹤/summary﹥ 
  77. /// ﹤param name="sender"﹥﹤/param﹥ 
  78. /// ﹤param name="e"﹥﹤/param﹥ 
  79. void drawPanel_MouseDown(object sender, MouseEventArgs e) 
  80. drawingLine = new Line(e.Location); 
  81. lines.Add(drawingLine); 
  82. ///C#画直线
  83. /// ﹤summary﹥ 
  84. /// 在绘图区移动鼠标时,如果正在绘制新线条,就更新绘制面板 
  85. /// ﹤/summary﹥ 
  86. /// ﹤param name="sender"﹥﹤/param﹥ 
  87. /// ﹤param name="e"﹥﹤/param﹥ 
  88. void drawPanel_MouseMove(object sender, MouseEventArgs e) 
  89. if(drawingLine != null) 
  90. drawingLine.EndPoint = e.Location; 
  91. drawPanel.Invalidate(); 
  92. /// ﹤summary﹥ 
  93. /// 绘制效果到面板 
  94. /// ﹤/summary﹥ 
  95. /// ﹤param name="sender"﹥﹤/param﹥ 
  96. /// ﹤param name="e"﹥﹤/param﹥ 
  97. void drawPanel_Paint(object sender, PaintEventArgs e) 
  98. Bitmap bp = new Bitmap(
  99. drawPanel.Width, drawPanel.Height); // 用于缓冲输出的位图对象 
  100. Graphics g = Graphics.FromImage(bp); 
  101. g.SmoothingMode = 
  102. System.Drawing.Drawing2D.
  103. SmoothingMode.AntiAlias; // 消锯齿(可选项) 
  104. Pen p = new Pen(Color.Black); 
  105. foreach (Line line in lines) 
  106. if (line == drawingLine) 
  107. // 当前绘制的线条是正在鼠标定位的线条 
  108. p.Color = Color.Blue; 
  109. else 
  110. p.Color = Color.Black; 
  111. g.DrawLine(p, line.StartPoint, line.EndPoint); 
  112. // 将缓冲位图绘制到输出 
  113. e.Graphics.DrawImage(bp, Point.Empty); 
  114. }
  115. //C#画直线

C#画直线的相关实例就向你演示到这里,希望对了解和学习C#画直线的实现有所帮助。

分享标题:C#画直线实现实例解析
转载源于:http://www.csdahua.cn/qtweb/news39/497839.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网