自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#畫直線實(shí)現(xiàn)實(shí)例解析

開發(fā) 后端
C#畫直線的具體實(shí)現(xiàn)是什么呢?C#畫直線的操作使用的方法是什么呢?那么這里向你介紹了一個(gè)完整的C#畫直線的實(shí)現(xiàn)實(shí)例代碼,希望對(duì)你有所幫助。

C#畫直線的操作有的時(shí)候我們會(huì)在實(shí)際開發(fā)遇到這樣的需求,那么C#畫直線是如何實(shí)現(xiàn)的呢?這里我們來看看具體的實(shí)現(xiàn)代碼,通過代碼的介紹希望對(duì)你的開發(fā)有所幫助。

C#畫直線實(shí)現(xiàn)實(shí)例:

  1. //以下是完整代碼,可以直接編譯運(yùn)行   
  2. //-----C#畫直線---------   
  3. using System;   
  4. using System.Collections.Generic;   
  5. using System.Windows.Forms;   
  6. using System.Drawing;   
  7.  
  8. namespace q2   
  9. {   
  10. static class Program   
  11. {   
  12. /// ﹤summary﹥   
  13. /// 應(yīng)用程序的主入口點(diǎn)。   
  14. /// ﹤/summary﹥   
  15. [STAThread]   
  16. static void Main()   
  17. {   
  18. Application.EnableVisualStyles();   
  19. Application.SetCompatibleTextRenderingDefault(false);   
  20. Application.Run(new Form1());   
  21. }   
  22. }   
  23.  
  24. /// ﹤summary﹥   
  25. /// 線條對(duì)象   
  26. /// ﹤/summary﹥   
  27. class Line   
  28. {   
  29. /// ﹤summary﹥   
  30. /// 建立線條對(duì)象,并設(shè)置起點(diǎn)   
  31. /// ﹤/summary﹥   
  32. /// ﹤param name="startPoint"﹥此線條的起點(diǎn)﹤/param﹥   
  33. public Line(Point startPoint)   
  34. {   
  35. StartPoint = startPoint;   
  36. EndPoint = startPoint;   
  37. }   
  38. public Point StartPoint = Point.Empty;   
  39. public Point EndPoint = Point.Empty;   
  40. }   
  41.  
  42. public class DrawPanel : Control   
  43. {   
  44. public DrawPanel()   
  45. {   
  46. this.DoubleBuffered = true;   
  47. this.SetStyle(  
  48. ControlStyles.OptimizedDoubleBuffer |   
  49. ControlStyles.ResizeRedraw, true);   
  50. }   
  51. }   
  52.  
  53. /// ﹤summary﹥   
  54. /// C#畫直線之窗口定義   
  55. /// ﹤/summary﹥   
  56. public class Form1 : Form   
  57. {   
  58. public Form1()   
  59. {   
  60. drawPanel.BackColor = Color.White;   
  61. drawPanel.Cursor = Cursors.Cross;   
  62. drawPanel.Dock = DockStyle.Fill;   
  63. drawPanel.MouseDown +=   
  64. new MouseEventHandler(drawPanel_MouseDown);   
  65. drawPanel.MouseUp +=   
  66. new MouseEventHandler(drawPanel_MouseUp);   
  67. drawPanel.MouseMove +=   
  68. new MouseEventHandler(drawPanel_MouseMove);   
  69. drawPanel.Paint +=   
  70. new PaintEventHandler(drawPanel_Paint);   
  71. Controls.Add(drawPanel);   
  72. }   
  73.  
  74. /// ﹤summary﹥   
  75. /// C#畫直線之用于保存繪出線條的集合   
  76. /// ﹤/summary﹥   
  77. private List﹤Line﹥ lines = new List﹤Line﹥();   
  78.  
  79. /// ﹤summary﹥   
  80. /// 用于保存當(dāng)前正在繪制的線條   
  81. /// ﹤/summary﹥   
  82. private Line drawingLine = null;   
  83.  
  84. /// ﹤summary﹥   
  85. /// 用于顯示繪圖的面板組件   
  86. /// ﹤/summary﹥   
  87. private DrawPanel drawPanel = new DrawPanel();   
  88.  
  89. /// ﹤summary﹥   
  90. /// 在繪圖區(qū)釋放鼠標(biāo),結(jié)束當(dāng)前線條繪制   
  91. /// ﹤/summary﹥   
  92. /// ﹤param name="sender"﹥﹤/param﹥   
  93. /// ﹤param name="e"﹥﹤/param﹥   
  94. void drawPanel_MouseUp(object sender, MouseEventArgs e)   
  95. {   
  96. if (drawingLine == nullreturn;   
  97. drawingLine.EndPoint = e.Location;   
  98. drawingLine = null;   
  99. }   
  100.  
  101. /// ﹤summary﹥   
  102. /// 在繪圖區(qū)按下鼠標(biāo),開始繪制新線條   
  103. /// ﹤/summary﹥   
  104. /// ﹤param name="sender"﹥﹤/param﹥   
  105. /// ﹤param name="e"﹥﹤/param﹥   
  106. void drawPanel_MouseDown(object sender, MouseEventArgs e)   
  107. {   
  108. drawingLine = new Line(e.Location);   
  109. lines.Add(drawingLine);   
  110. }   
  111. ///C#畫直線  
  112. /// ﹤summary﹥   
  113. /// 在繪圖區(qū)移動(dòng)鼠標(biāo)時(shí),如果正在繪制新線條,就更新繪制面板   
  114. /// ﹤/summary﹥   
  115. /// ﹤param name="sender"﹥﹤/param﹥   
  116. /// ﹤param name="e"﹥﹤/param﹥   
  117. void drawPanel_MouseMove(object sender, MouseEventArgs e)   
  118. {   
  119. if(drawingLine != null)   
  120. {   
  121. drawingLine.EndPoint = e.Location;   
  122. drawPanel.Invalidate();   
  123. }   
  124. }   
  125.  
  126. /// ﹤summary﹥   
  127. /// 繪制效果到面板   
  128. /// ﹤/summary﹥   
  129. /// ﹤param name="sender"﹥﹤/param﹥   
  130. /// ﹤param name="e"﹥﹤/param﹥   
  131. void drawPanel_Paint(object sender, PaintEventArgs e)   
  132. {   
  133. Bitmap bp = new Bitmap(  
  134. drawPanel.Width, drawPanel.Height); // 用于緩沖輸出的位圖對(duì)象   
  135. Graphics g = Graphics.FromImage(bp);   
  136.  
  137. g.SmoothingMode =   
  138. System.Drawing.Drawing2D.  
  139. SmoothingMode.AntiAlias; // 消鋸齒(可選項(xiàng))   
  140.  
  141. Pen p = new Pen(Color.Black);   
  142. foreach (Line line in lines)   
  143. {   
  144. if (line == drawingLine)   
  145. {   
  146. // 當(dāng)前繪制的線條是正在鼠標(biāo)定位的線條   
  147. p.Color = Color.Blue;   
  148. }   
  149. else   
  150. {   
  151. p.Color = Color.Black;   
  152. }   
  153. g.DrawLine(p, line.StartPoint, line.EndPoint);   
  154. }   
  155. // 將緩沖位圖繪制到輸出   
  156. e.Graphics.DrawImage(bp, Point.Empty);   
  157. }   
  158. }   
  159. }  
  160. //C#畫直線  

C#畫直線的相關(guān)實(shí)例就向你演示到這里,希望對(duì)了解和學(xué)習(xí)C#畫直線的實(shí)現(xiàn)有所幫助。

【編輯推薦】

  1. C#單元測(cè)試的一個(gè)小故事
  2. C#單元測(cè)試概念及作用的淺析
  3. C#單元測(cè)試使用的必要性的淺析
  4. C#單元測(cè)試的運(yùn)行淺析
  5. 常見的C#單元測(cè)試工具介紹
責(zé)任編輯:仲衡 來源: CSDN博客
相關(guān)推薦

2009-09-01 13:59:01

C#操作Excel

2009-09-03 17:23:45

C#發(fā)送郵件

2009-09-03 17:06:17

C#回車切換焦點(diǎn)

2009-09-02 16:14:21

C#動(dòng)態(tài)創(chuàng)建數(shù)組

2009-09-03 12:52:50

C#打開記事本

2009-08-27 18:09:49

C#接口的實(shí)現(xiàn)

2009-08-17 14:41:47

C#進(jìn)度條實(shí)現(xiàn)

2009-09-09 12:55:59

C# TextBox事

2009-09-03 10:52:41

C#遞歸樹

2009-08-31 17:16:12

C#實(shí)現(xiàn)接口

2009-08-17 17:15:48

C# 進(jìn)度條效果

2009-08-14 09:50:46

C#復(fù)制構(gòu)造函數(shù)

2009-09-07 03:58:42

WinForm傳值

2009-08-31 12:31:45

C#創(chuàng)建文件夾

2009-09-09 14:40:15

C# XML解析

2009-09-09 13:57:28

C# XML解析

2009-08-18 10:47:40

C#枚舉類型

2009-08-26 12:14:44

C#打印設(shè)置

2009-09-07 06:31:32

C#窗體移動(dòng)

2009-08-19 16:09:15

C#操作Access
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)