最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用C# 實現鼠標框選效果的實現代碼

 更新時間:2013年05月15日 11:59:27   作者:  
本篇文章是對用C#實現鼠標框選效果的實現代碼進行了詳細的分析介紹,需要的朋友參考下

實現步驟:

1.實現整個鼠標框選的幾個事件(down、move、up),當鼠標點下記錄鼠標框選的起點,鼠標抬起結束操作。

2.以鼠標框選過程中獲取的鼠標坐標為基點計算框選的矩形的4點坐標,4點坐標以順時針方向布點。

3.通過Shape.Path類實現在類上畫出此矩形。

代碼如下:

復制代碼 代碼如下:

namespace HostDemo {
 public class HostCanvas : Canvas {
  public HostCanvas() {
   InitializeComponent();
  }

  private void InitializeComponent() {
   this.Loaded += OnLoad;
   this.MouseDown += OnMouseDown;
   this.MouseMove += OnMouseMove;
   this.MouseUp += OnMouseUp;
   locus = new Path();
   locus.Fill = new SolidColorBrush(Color.FromArgb(1, 255, 255, 255));
   locus.Stroke = Brushes.Red;
   locus.StrokeThickness = 1;
   locus.IsManipulationEnabled = true;
  }

  void OnMouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e) {
   ispath = false;
  }

  void OnMouseMove(object sender, System.Windows.Input.MouseEventArgs e) {
   if(ispath){
    endpoint = e.GetPosition(this);
    locus.Data = DrawingRect(startpoint,endpoint);
   }
  }

  void OnMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) {
   if(!this.Children.Contains(locus)) this.Children.Add(locus);
   if (locus.Data != null) locus.Data = null;
   startpoint = e.GetPosition(this);
   ispath = true;
  }

  void OnLoad(object sender, System.Windows.RoutedEventArgs e) {
   this.Background = new SolidColorBrush(Color.FromArgb(35, 255, 255, 255));
  }

  private PathGeometry DrawingRect(Point beginpoint, Point closepoint) {
   PathGeometry result = new PathGeometry(); 
   PathFigure figure = new PathFigure();
   figure.IsClosed = true;
   figure.StartPoint = beginpoint;
   PathSegmentCollection pathSegmentCollection = new PathSegmentCollection();
   PathFigureCollection pathFigureCollection = new PathFigureCollection();  
   LineSegment m1 = new LineSegment();
   m1.Point = new Point(closepoint.X, beginpoint.Y);
   LineSegment m2 = new LineSegment();
   m2.Point = closepoint;
   LineSegment m3 = new LineSegment();
   m3.Point = new Point(beginpoint.X, closepoint.Y);
   pathSegmentCollection.Add(m1);
   pathSegmentCollection.Add(m2);
   pathSegmentCollection.Add(m3);
   figure.Segments = pathSegmentCollection;
   pathFigureCollection.Add(figure);
   result.Figures = pathFigureCollection;

   return result();
  }

  private Path locus;
  private bool ispath = false;
  private Point startpoint;
  private Point endpoint;
 }
}


相關文章

  • C++內存管理介紹

    C++內存管理介紹

    這篇文章主要介紹了C++內存管理,C++標準委員會給我們提供了auto_ptr智能指針,后面又引入了share_ptr以及weak_ptr幫助我們正確和安全的使用指針,本文主要是介紹boost庫提供的解決方案,需要的朋友可以參考一下
    2022-01-01
  • C語言指針如何實現字符串逆序反轉

    C語言指針如何實現字符串逆序反轉

    這篇文章主要介紹了C語言指針如何實現字符串逆序反轉,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++實現發(fā)送郵件和附件功能

    C++實現發(fā)送郵件和附件功能

    這篇文章主要為大家詳細介紹了C++實現發(fā)送郵件和附件功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語言指針引用數組案例講解

    C語言指針引用數組案例講解

    這篇文章主要介紹了C語言指針引用數組案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-09-09
  • C++ OpenCV實現圖像雙三次插值算法詳解

    C++ OpenCV實現圖像雙三次插值算法詳解

    圖像雙三次插值的原理,就是目標圖像的每一個像素都是由原圖上相對應點周圍的4x4=16個像素經過加權之后再相加得到的。本文主要介紹了通過C++ OpenCV實現圖像雙三次插值算法,需要的可以參考一下
    2021-12-12
  • c++使用單例模式實現命名空間函數案例詳解

    c++使用單例模式實現命名空間函數案例詳解

    這篇文章主要介紹了c++使用單例模式實現命名空間函數,本案例實現一個test命名空間,此命名空間內有兩個函數,分別為getName()和getNameSpace(),本文結合實例代碼給大家講解的非常詳細,需要的朋友可以參考下
    2023-04-04
  • c++ 梅森數源碼示例解析

    c++ 梅森數源碼示例解析

    這篇文章主要為大家介紹了c++ 梅森數源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • C語言實現簡單貪吃蛇小游戲

    C語言實現簡單貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了C語言實現簡單貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • C++私有繼承(二)

    C++私有繼承(二)

    這篇文章主要介紹了C++私有繼承,在私有繼承時,基類的公有對象以及保護對象會變成派生類的私有對象。我們可以在派生類方法當中使用它,但無法通過派生類對象直接調用,但無法訪問基類的私有方法和對象,下面具體內容,需要的朋友可以參考一下
    2022-01-01
  • C++實現二維圖形的打印

    C++實現二維圖形的打印

    大家好,本篇文章主要講的是C++實現二維圖形的打印,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論

门头沟区| 会理县| 会宁县| 嵊泗县| 太仆寺旗| 舒兰市| 潼南县| 两当县| 临澧县| 楚雄市| 平山县| 常州市| 沂源县| 遂平县| 岳阳市| 海口市| 稷山县| 大宁县| 土默特右旗| 马公市| 聂荣县| 保山市| 陆良县| 平乐县| 沙洋县| 甘德县| 长寿区| 柳州市| 厦门市| 怀柔区| 崇州市| 林甸县| 惠安县| 石景山区| 开阳县| 揭西县| 临猗县| 阿坝| 红原县| 巴东县| 涿鹿县|