Пример #1
0
		/// <summary>
		/// Creates an invisible Win32 caret for the specified Visual with the specified size (coordinates local to the owner visual).
		/// </summary>
		public static bool CreateCaret(Visual owner, Size size)
		{
			if (owner == null)
				throw new ArgumentNullException("owner");
			HwndSource source = PresentationSource.FromVisual(owner) as HwndSource;
			if (source != null) {
				Vector r = owner.PointToScreen(new Point(size.Width, size.Height)) - owner.PointToScreen(new Point(0, 0));
				return SafeNativeMethods.CreateCaret(source.Handle, IntPtr.Zero, (int)Math.Ceiling(r.X), (int)Math.Ceiling(r.Y));
			} else {
				return false;
			}
		}
Пример #2
0
        public static System.Windows.Point PointToScreenDpiAware(this SWM.Visual visual, System.Windows.Point point)
        {
            point = visual.PointToScreen(point);

            PresentationSource source = PresentationSource.FromVisual(visual);

            double scaleFactorX = source.CompositionTarget.TransformToDevice.M11;
            double scaleFactorY = source.CompositionTarget.TransformToDevice.M22;

            return(new System.Windows.Point(point.X / scaleFactorX, point.Y / scaleFactorY));
        }
Пример #3
0
        /// <summary>
        /// This will move the mouse cursor to a new location
        /// </summary>
        public static void SetMousePosition(Visual relativeTo, Point? offset = null)
        {
            Point point = offset ?? new Point(0, 0);

            Point screenPos = relativeTo.PointToScreen(point);

            SetMousePosition(screenPos);
        }
 public static void ShowWindowMenu(HwndSource source, Visual element, Point elementPoint,
     Size elementSize)
 {
     if (elementPoint.X < 0.0 || elementPoint.X > elementSize.Width ||
         (elementPoint.Y < 0.0 || elementPoint.Y > elementSize.Height))
         return;
     Point screenPoint = element.PointToScreen(elementPoint);
     ShowWindowMenu(source, screenPoint, true);
 }
Пример #5
0
 private static Point GetPixelSnappingOffset(Visual visual, Visual rootVisual)
 {
     var point = new Point();
     if (rootVisual != null)
     {
         var transform = visual.TransformToAncestor(rootVisual) as Transform;
         if ((transform != null) && transform.Value.HasInverse)
         {
             point = visual.PointFromScreen(visual.PointToScreen(point));
         }
     }
     
     return point;
 }
 /// <summary>
 /// Converts point in control to screen point in default DPI.
 /// </summary>
 /// <param name="control">Parent control.</param>
 /// <param name="point">Current mouse position.</param>
 /// <returns>Point in default DPI.</returns>
 public Point ConvertRelativePointToScreenInDefaultDpi(Visual control, Point point)
 {
     Point screenPoint = control.PointToScreen(point);
     return GetScreenPointInDefaultDpi(screenPoint);
 }