OSDN Git Service

WPF版でDPIを96より大きな値にするとクリック位置がずれる問題を修正した
authorkonekoneko <test2214@hotmail.co.jp>
Sat, 11 Apr 2015 10:54:55 +0000 (19:54 +0900)
committerkonekoneko <test2214@hotmail.co.jp>
Sat, 11 Apr 2015 10:54:55 +0000 (19:54 +0900)
WPF/FooEditEngine/FooTextBox.cs

index f25a695..28bdeae 100644 (file)
@@ -837,7 +837,7 @@ namespace FooEditEngine.WPF
         /// </remarks>\r
         protected override void OnMouseDown(MouseButtonEventArgs e)\r
         {\r
-            System.Windows.Point p = e.GetPosition(this);\r
+            var p = this.GetDipFromPoint(e.GetPosition(this));\r
             TextPoint tp = this.View.GetTextPointFromPostion(p);\r
             if (tp == TextPoint.Null)\r
                 return;\r
@@ -887,7 +887,7 @@ namespace FooEditEngine.WPF
         /// </remarks>\r
         protected override void  OnMouseMove(MouseEventArgs e)\r
         {\r
-            System.Windows.Point p = e.GetPosition(this);\r
+            var p = this.GetDipFromPoint(e.GetPosition(this));\r
             TextPoint tp = this.View.GetTextPointFromPostion(p);\r
             if (tp == TextPoint.Null)\r
             {\r
@@ -924,6 +924,14 @@ namespace FooEditEngine.WPF
             }\r
         }\r
 \r
+        private Point GetDipFromPoint(Point p)\r
+        {\r
+            float dpi;\r
+            this.Render.GetDpi(out dpi,out dpi);\r
+            double scale = dpi / 96.0;\r
+            return p.Scale(1 / scale);\r
+        }\r
+\r
         /// <inheritdoc/>\r
         protected override void OnMouseWheel(MouseWheelEventArgs e)\r
         {\r