示例#1
0
 public void DrawLine(Pen pen, Point startPoint, Point endPoint)
 {
     canvas.DrawLine((float)startPoint.X, (float)startPoint.Y, (float)endPoint.X, (float)endPoint.Y,
                     new Paint {
         Color = pen.Brush.Color.ToAndroid(), StrokeWidth = (float)pen.Thickness
     });
 }
示例#2
0
        public void DrawText(FormattedText formattedText, Point point, Rect?clipRect)
        {
            var paint = new Paint();

            paint.TextSize  = formattedText.FontSize;
            paint.Color     = formattedText.Brush.Color.ToAndroid();
            paint.AntiAlias = true;
            var offset = -paint.Ascent();

            canvas.DrawText(formattedText.Text, (float)point.X, (float)(point.Y + offset), paint);
        }
示例#3
0
        private IObservable <PointerInput> GetPointerObservable()
        {
            var down = Observable.FromEventPattern <ButtonPressEventHandler, ButtonPressEventArgs>(
                ev => widget.ButtonPressEvent += ev,
                ev => widget.ButtonPressEvent -= ev).Select(ev =>
            {
                var x = ev.EventArgs.Event.X;
                var y = ev.EventArgs.Event.Y;

                var point = new Point(x, y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Down
                });
            });

            var up = Observable.FromEventPattern <ButtonReleaseEventHandler, ButtonReleaseEventArgs>(
                ev => widget.ButtonReleaseEvent += ev,
                ev => widget.ButtonReleaseEvent -= ev).Select(ev =>
            {
                var x = ev.EventArgs.Event.X;
                var y = ev.EventArgs.Event.Y;

                var point = new Point(x, y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Up
                });
            });

            var move = Observable.FromEventPattern <MotionNotifyEventHandler, MotionNotifyEventArgs>(
                ev => widget.MotionNotifyEvent += ev,
                ev => widget.MotionNotifyEvent -= ev).Select(ev =>
            {
                var x = ev.EventArgs.Event.X;
                var y = ev.EventArgs.Event.Y;

                var point = new Point(x, y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Released
                });
            });

            return(down.Merge(up).Merge(move));
        }
示例#4
0
        private static IObservable <PointerInput> GetPointerObservable(IInputElement element)
        {
            var down = Observable.FromEventPattern <MouseButtonEventHandler, MouseEventArgs>(
                ev => element.PreviewMouseLeftButtonDown += ev,
                ev => element.PreviewMouseLeftButtonDown -= ev)
                       .Select(pattern =>
            {
                var position = pattern.EventArgs.GetPosition(element);
                var point    = new Point(position.X, position.Y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Down
                });
            });

            var up = Observable.FromEventPattern <MouseButtonEventHandler, MouseEventArgs>(
                ev => element.PreviewMouseLeftButtonUp += ev,
                ev => element.PreviewMouseLeftButtonUp -= ev)
                     .Select(pattern =>
            {
                var position = pattern.EventArgs.GetPosition(element);
                var point    = new Point(position.X, position.Y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Up
                });
            });

            var hover = Observable.FromEventPattern <MouseEventHandler, MouseEventArgs>(
                ev => element.PreviewMouseMove += ev,
                ev => element.PreviewMouseMove -= ev)
                        .Select(pattern =>
            {
                var position = pattern.EventArgs.GetPosition(element);
                var point    = new Point(position.X, position.Y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Released
                });
            });

            return(down.Merge(up).Merge(hover));
        }
示例#5
0
        private IObservable <PointerInput> GetPointerObservable()
        {
            var pressed = Observable.FromEventPattern <PointerEventHandler, PointerRoutedEventArgs>(
                ev => control.PointerPressed += ev,
                ev => control.PointerPressed -= ev).Select(pattern =>
            {
                var pointerPoint = pattern.EventArgs.GetCurrentPoint(control);
                var point1       = new Point(pointerPoint.Position.X, pointerPoint.Position.Y);
                return(new PointerInput {
                    Point = point1, PrimaryButtonStatus = PointerStatus.Down
                });
            });

            var released = Observable.FromEventPattern <PointerEventHandler, PointerRoutedEventArgs>(
                ev => control.PointerReleased += ev,
                ev => control.PointerReleased -= ev).Select(pattern =>
            {
                var pointerPoint = pattern.EventArgs.GetCurrentPoint(control);
                var point        = new Point(pointerPoint.Position.X, pointerPoint.Position.Y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Up
                });
            });

            var moved = Observable.FromEventPattern <PointerEventHandler, PointerRoutedEventArgs>(
                ev => control.PointerMoved += ev,
                ev => control.PointerMoved -= ev).Select(pattern =>
            {
                var pointerPoint1 = pattern.EventArgs.GetCurrentPoint(control);
                var point         = new Point(pointerPoint1.Position.X, pointerPoint1.Position.Y);
                return(new PointerInput {
                    Point = point, PrimaryButtonStatus = PointerStatus.Released
                });
            });

            return(pressed.Merge(released).Merge(moved));
        }
示例#6
0
 public static PointF ToAndroid(this OmniGui.Geometry.Point point)
 {
     return(new PointF((int)point.X, (int)point.Y));
 }