MainForm.cs
上传用户:yiyuerguo
上传日期:2014-09-27
资源大小:3781k
文件大小:7k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using System.Drawing.Drawing2D;
  8. namespace PaintClient
  9. {
  10. /// <summary>
  11. /// MainForm 的摘要说明。
  12. /// </summary>
  13. public class MainForm : System.Windows.Forms.Form
  14. {
  15. private System.Windows.Forms.MainMenu mainMenu1;
  16. private System.Windows.Forms.MenuItem menuItem1;
  17. private System.Windows.Forms.MenuItem menuItemSetting;
  18. private System.Windows.Forms.StatusBar statusBar1;
  19. private System.Windows.Forms.Label label1;
  20. /// <summary>
  21. /// 必需的设计器变量。
  22. /// </summary>
  23. private System.ComponentModel.Container components = null;
  24. //设置系统组件
  25. Coordinator coordinator;
  26. //定义了一个能够返回系统时间的对象coordinator
  27. //Store the lines
  28. private ArrayList Strokes=new ArrayList();
  29. //建立一个大小可按动态增加的数组实现接口Strokes
  30. //Store the current line
  31. Stroke CurrentStroke=null;
  32. //定义了一个CurrentStroke对象 用来绘制当前点
  33. Point OriginPoint;
  34. //设置初始点
  35. Point CurrentPoint;
  36. //设置当前点
  37. //Default width of the pen
  38. private int m_PenWidth=4;
  39. //默认笔的宽度
  40. private System.Windows.Forms.MenuItem menuItem2;
  41. private Color m_PenColor=Color.Black;
  42. //默认笔的颜色为黑色
  43. protected MainForm()
  44. {
  45. //
  46. // Windows 窗体设计器支持所必需的
  47. //
  48. InitializeComponent();
  49. //
  50. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  51. //
  52. try {
  53. coordinator=new Coordinator();
  54. //Display the time on statusbar
  55. statusBar1.Text="当前时间: "+coordinator.GetCurrentTime();
  56. }
  57. catch(Exception ex)
  58. {
  59. }
  60. }
  61. /// <summary>
  62. /// 清理所有正在使用的资源。
  63. /// </summary>
  64. protected override void Dispose( bool disposing )
  65. {
  66. if( disposing )
  67. {
  68. if (components != null) 
  69. {
  70. components.Dispose();
  71. }
  72. }
  73. base.Dispose( disposing );
  74. }
  75. #region Windows 窗体设计器生成的代码
  76. /// <summary>
  77. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  78. /// 此方法的内容。
  79. /// </summary>
  80. private void InitializeComponent()
  81. {
  82. this.mainMenu1 = new System.Windows.Forms.MainMenu();
  83. this.menuItem1 = new System.Windows.Forms.MenuItem();
  84. this.menuItemSetting = new System.Windows.Forms.MenuItem();
  85. this.menuItem2 = new System.Windows.Forms.MenuItem();
  86. this.statusBar1 = new System.Windows.Forms.StatusBar();
  87. this.label1 = new System.Windows.Forms.Label();
  88. this.SuspendLayout();
  89. // 
  90. // mainMenu1
  91. // 
  92. this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  93.   this.menuItem1});
  94. // 
  95. // menuItem1
  96. // 
  97. this.menuItem1.Index = 0;
  98. this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
  99.   this.menuItemSetting,
  100.   this.menuItem2});
  101. this.menuItem1.Text = "选项";
  102. // 
  103. // menuItemSetting
  104. // 
  105. this.menuItemSetting.Index = 0;
  106. this.menuItemSetting.Text = "设置";
  107. this.menuItemSetting.Click += new System.EventHandler(this.menuItemSetting_Click);
  108. // 
  109. // menuItem2
  110. // 
  111. this.menuItem2.Index = 1;
  112. this.menuItem2.Text = "退出";
  113. // 
  114. // statusBar1
  115. // 
  116. this.statusBar1.Location = new System.Drawing.Point(0, 296);
  117. this.statusBar1.Name = "statusBar1";
  118. this.statusBar1.Size = new System.Drawing.Size(336, 22);
  119. this.statusBar1.TabIndex = 0;
  120. this.statusBar1.PanelClick += new System.Windows.Forms.StatusBarPanelClickEventHandler(this.statusBar1_PanelClick);
  121. // 
  122. // label1
  123. // 
  124. this.label1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
  125. this.label1.Location = new System.Drawing.Point(16, 8);
  126. this.label1.Name = "label1";
  127. this.label1.Size = new System.Drawing.Size(304, 23);
  128. this.label1.TabIndex = 1;
  129. this.label1.Text = "简单的绘图实例";
  130. this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
  131. // 
  132. // MainForm
  133. // 
  134. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  135. this.ClientSize = new System.Drawing.Size(336, 318);
  136. this.Controls.Add(this.label1);
  137. this.Controls.Add(this.statusBar1);
  138. this.Menu = this.mainMenu1;
  139. this.Name = "MainForm";
  140. this.Text = "PaintForm";
  141. this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseDown);
  142. this.Closing += new System.ComponentModel.CancelEventHandler(this.MainForm_Closing);
  143. this.Load += new System.EventHandler(this.MainForm_Load);
  144. this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseUp);
  145. this.Paint += new System.Windows.Forms.PaintEventHandler(this.MainForm_Paint);
  146. this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.MainForm_MouseMove);
  147. this.ResumeLayout(false);
  148. }
  149. #endregion
  150. /// <summary>
  151. /// 应用程序的主入口点。
  152. /// </summary>
  153. [STAThread]
  154. static void Main() 
  155. {
  156. Application.Run(Instance());
  157. }
  158. //声明一个静态属性 _instance,保证在外部类中实例化一个MainForm类时,仅有一个实例被返回
  159. private static MainForm _instance;
  160. public static MainForm Instance() {
  161. if(_instance==null)
  162. _instance=new MainForm();
  163. return _instance;
  164. }
  165. private void menuItemSetting_Click(object sender, System.EventArgs e)
  166. {
  167. SettingDialog dlgSetting=new SettingDialog();
  168. dlgSetting.ShowDialog();
  169. m_PenColor=dlgSetting.PenColor;
  170. m_PenWidth=dlgSetting.PenWidth;
  171. dlgSetting.Close();
  172. }
  173. //鼠标按下
  174. private void MainForm_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  175. {
  176. if(e.Button==MouseButtons.Left) {
  177. CurrentStroke=new Stroke(e.X,e.Y);
  178. CurrentStroke.PenColor=m_PenColor;
  179. CurrentStroke.PenWidth=m_PenWidth;
  180. OriginPoint=new Point(e.X,e.Y);
  181. CurrentPoint=new Point(e.X,e.Y);
  182. }
  183. }
  184.         //鼠标移动
  185. private void MainForm_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
  186. {
  187. if((e.Button&MouseButtons.Left)!=0&&CurrentStroke!=null) {
  188. CurrentPoint=new Point(e.X,e.Y);
  189. Graphics g=Graphics.FromHwnd(Handle);
  190. Pen pen=new Pen(m_PenColor,m_PenWidth);
  191. g.DrawLine(pen,OriginPoint,CurrentPoint);
  192. pen.Dispose();
  193. g.Dispose();
  194. CurrentStroke.Add(e.X,e.Y);
  195. OriginPoint=CurrentPoint;
  196. }
  197. }
  198.         //鼠标抬起
  199. private void MainForm_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  200. {
  201. if(e.Button==MouseButtons.Left && CurrentStroke!=null) {
  202. CurrentPoint=new Point(e.X,e.Y);
  203. Graphics g=Graphics.FromHwnd(Handle);
  204. Pen pen=new Pen(m_PenColor,m_PenWidth);
  205. g.DrawLine(pen,OriginPoint,CurrentPoint);
  206. pen.Dispose();
  207. g.Dispose();
  208. CurrentStroke.Add(e.X,e.Y);
  209. coordinator.DrawStroke(CurrentStroke);
  210. CurrentStroke=null;
  211. }
  212. }
  213. private void MainForm_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
  214. {
  215. lock(Strokes.SyncRoot) {
  216. foreach(Stroke stroke in Strokes) {
  217. stroke.DrawStroke(e.Graphics);
  218. }
  219. }
  220. }
  221. private void MainForm_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  222. {
  223. //coordinator.NewStroke -= new NewStrokeEventHandler(callback.NewStrokeCallback);
  224. }
  225. private void statusBar1_PanelClick(object sender, System.Windows.Forms.StatusBarPanelClickEventArgs e)
  226. {
  227. }
  228. private void MainForm_Load(object sender, System.EventArgs e)
  229. {
  230. }
  231. }//End of the class
  232. }