示例#1
0
        private PointerPointProperties GetProperties()
        {
            var props = new PointerPointProperties()
            {
                IsPrimary = true,
                IsInRange = Pointer.IsInRange,
            };

            props.IsLeftButtonPressed   = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Left);
            props.IsMiddleButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Middle);
            if (_buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Right))
            {
                switch (Pointer.PointerDeviceType)
                {
                case PointerDeviceType.Mouse:
                    props.IsMiddleButtonPressed = true;
                    break;

                case PointerDeviceType.Pen:
                    props.IsBarrelButtonPressed = true;
                    break;
                }
            }
            props.IsXButton1Pressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X1);
            props.IsXButton2Pressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X2);
            props.IsEraser          = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Eraser);

            props.PointerUpdateKind = ToUpdateKind(_buttonUpdate, props);

            return(props);
        }
        private PointerPointProperties GetProperties()
        {
            var props = new PointerPointProperties()
            {
                IsPrimary = true,
                IsInRange = Pointer.IsInRange,
            };

            props.IsLeftButtonPressed   = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Left);
            props.IsMiddleButtonPressed = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Middle);
            props.IsRightButtonPressed  = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Right);
            props.IsXButton1Pressed     = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X1);
            props.IsXButton2Pressed     = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.X2);
            props.IsEraser = _buttons.HasFlag(WindowManagerInterop.HtmlPointerButtonsState.Eraser);

            switch (Pointer.PointerDeviceType)
            {
            // For touch and mouse, we keep the default pressure of .5, as WinUI

            case PointerDeviceType.Pen:
                // !!! WARNING !!! Here we have a slight different behavior compared to WinUI:
                // On WinUI we will get IsRightButtonPressed (with IsBarrelButtonPressed) only if the user is pressing
                // the barrel button when pen goes "in contact" (i.e. touches the screen), otherwise we will get
                // IsLeftButtonPressed and IsBarrelButtonPressed.
                // Here we set IsRightButtonPressed as soon as the barrel button was pressed, no matter
                // if the pen was already in contact or not.
                // This is acceptable since the UIElement pressed state is **per pointer** (not buttons of pointer)
                // and GestureRecognizer always checks that pressed buttons didn't changed for a single gesture.
                props.IsBarrelButtonPressed = props.IsRightButtonPressed;
                props.Pressure = (float)_pressure;
                break;
            }

            props.PointerUpdateKind = ToUpdateKind(_buttonUpdate, props);

            return(props);
        }