C#畫直線實(shí)現(xiàn)實(shí)例解析
作者:webajax 
  C#畫直線的具體實(shí)現(xiàn)是什么呢?C#畫直線的操作使用的方法是什么呢?那么這里向你介紹了一個完整的C#畫直線的實(shí)現(xiàn)實(shí)例代碼,希望對你有所幫助。
 C#畫直線的操作有的時候我們會在實(shí)際開發(fā)遇到這樣的需求,那么C#畫直線是如何實(shí)現(xiàn)的呢?這里我們來看看具體的實(shí)現(xiàn)代碼,通過代碼的介紹希望對你的開發(fā)有所幫助。
C#畫直線實(shí)現(xiàn)實(shí)例:
- //以下是完整代碼,可以直接編譯運(yùn)行
 - //-----C#畫直線---------
 - using System;
 - using System.Collections.Generic;
 - using System.Windows.Forms;
 - using System.Drawing;
 - namespace q2
 - {
 - static class Program
 - {
 - /// ﹤summary﹥
 - /// 應(yīng)用程序的主入口點(diǎn)。
 - /// ﹤/summary﹥
 - [STAThread]
 - static void Main()
 - {
 - Application.EnableVisualStyles();
 - Application.SetCompatibleTextRenderingDefault(false);
 - Application.Run(new Form1());
 - }
 - }
 - /// ﹤summary﹥
 - /// 線條對象
 - /// ﹤/summary﹥
 - class Line
 - {
 - /// ﹤summary﹥
 - /// 建立線條對象,并設(shè)置起點(diǎn)
 - /// ﹤/summary﹥
 - /// ﹤param name="startPoint"﹥此線條的起點(diǎn)﹤/param﹥
 - public Line(Point startPoint)
 - {
 - StartPoint = startPoint;
 - EndPoint = startPoint;
 - }
 - public Point StartPoint = Point.Empty;
 - public Point EndPoint = Point.Empty;
 - }
 - public class DrawPanel : Control
 - {
 - public DrawPanel()
 - {
 - this.DoubleBuffered = true;
 - this.SetStyle(
 - ControlStyles.OptimizedDoubleBuffer |
 - ControlStyles.ResizeRedraw, true);
 - }
 - }
 - /// ﹤summary﹥
 - /// C#畫直線之窗口定義
 - /// ﹤/summary﹥
 - public class Form1 : Form
 - {
 - public Form1()
 - {
 - drawPanel.BackColor = Color.White;
 - drawPanel.Cursor = Cursors.Cross;
 - drawPanel.Dock = DockStyle.Fill;
 - drawPanel.MouseDown +=
 - new MouseEventHandler(drawPanel_MouseDown);
 - drawPanel.MouseUp +=
 - new MouseEventHandler(drawPanel_MouseUp);
 - drawPanel.MouseMove +=
 - new MouseEventHandler(drawPanel_MouseMove);
 - drawPanel.Paint +=
 - new PaintEventHandler(drawPanel_Paint);
 - Controls.Add(drawPanel);
 - }
 - /// ﹤summary﹥
 - /// C#畫直線之用于保存繪出線條的集合
 - /// ﹤/summary﹥
 - private List﹤Line﹥ lines = new List﹤Line﹥();
 - /// ﹤summary﹥
 - /// 用于保存當(dāng)前正在繪制的線條
 - /// ﹤/summary﹥
 - private Line drawingLine = null;
 - /// ﹤summary﹥
 - /// 用于顯示繪圖的面板組件
 - /// ﹤/summary﹥
 - private DrawPanel drawPanel = new DrawPanel();
 - /// ﹤summary﹥
 - /// 在繪圖區(qū)釋放鼠標(biāo),結(jié)束當(dāng)前線條繪制
 - /// ﹤/summary﹥
 - /// ﹤param name="sender"﹥﹤/param﹥
 - /// ﹤param name="e"﹥﹤/param﹥
 - void drawPanel_MouseUp(object sender, MouseEventArgs e)
 - {
 - if (drawingLine == null) return;
 - drawingLine.EndPoint = e.Location;
 - drawingLine = null;
 - }
 - /// ﹤summary﹥
 - /// 在繪圖區(qū)按下鼠標(biāo),開始繪制新線條
 - /// ﹤/summary﹥
 - /// ﹤param name="sender"﹥﹤/param﹥
 - /// ﹤param name="e"﹥﹤/param﹥
 - void drawPanel_MouseDown(object sender, MouseEventArgs e)
 - {
 - drawingLine = new Line(e.Location);
 - lines.Add(drawingLine);
 - }
 - ///C#畫直線
 - /// ﹤summary﹥
 - /// 在繪圖區(qū)移動鼠標(biāo)時,如果正在繪制新線條,就更新繪制面板
 - /// ﹤/summary﹥
 - /// ﹤param name="sender"﹥﹤/param﹥
 - /// ﹤param name="e"﹥﹤/param﹥
 - void drawPanel_MouseMove(object sender, MouseEventArgs e)
 - {
 - if(drawingLine != null)
 - {
 - drawingLine.EndPoint = e.Location;
 - drawPanel.Invalidate();
 - }
 - }
 - /// ﹤summary﹥
 - /// 繪制效果到面板
 - /// ﹤/summary﹥
 - /// ﹤param name="sender"﹥﹤/param﹥
 - /// ﹤param name="e"﹥﹤/param﹥
 - void drawPanel_Paint(object sender, PaintEventArgs e)
 - {
 - Bitmap bp = new Bitmap(
 - drawPanel.Width, drawPanel.Height); // 用于緩沖輸出的位圖對象
 - Graphics g = Graphics.FromImage(bp);
 - g.SmoothingMode =
 - System.Drawing.Drawing2D.
 - SmoothingMode.AntiAlias; // 消鋸齒(可選項)
 - Pen p = new Pen(Color.Black);
 - foreach (Line line in lines)
 - {
 - if (line == drawingLine)
 - {
 - // 當(dāng)前繪制的線條是正在鼠標(biāo)定位的線條
 - p.Color = Color.Blue;
 - }
 - else
 - {
 - p.Color = Color.Black;
 - }
 - g.DrawLine(p, line.StartPoint, line.EndPoint);
 - }
 - // 將緩沖位圖繪制到輸出
 - e.Graphics.DrawImage(bp, Point.Empty);
 - }
 - }
 - }
 - //C#畫直線
 
C#畫直線的相關(guān)實(shí)例就向你演示到這里,希望對了解和學(xué)習(xí)C#畫直線的實(shí)現(xiàn)有所幫助。
【編輯推薦】
責(zé)任編輯:仲衡 
                    來源:
                    CSDN博客
 














 
 
 
 
 
 
 