Ejemplo n.º 1
0
 public UpdateContext OffsetUpdateContext(UpdateContext context)
 {
     if (CanScroll())
     {
         if (context.LeftButton == ButtonState.Pressed)
         {
             if (LastPressedOrigin.HasValue)
             {
                 int maxOffset = (int)(Size.X * Scale.X - WindowSize.X);
                 int newOffset = Offset + (LastPressedOrigin.Value - context.CursorPosition.Value.X);
                 Offset         = Math.Max(0, Math.Min(maxOffset, newOffset));
                 Transformation = Matrix.CreateScale(Scale.X) * Matrix.CreateTranslation(-Offset, 0, 0);
             }
             LastPressedOrigin = context.CursorPosition.Value.X;
         }
         else
         {
             LastPressedOrigin = null;
         }
     }
     if (context.CursorPosition.HasValue)
     {
         var cursorPosition = context.CursorPosition.Value;
         return(context.Clone(cursorPosition: new Point((int)((cursorPosition.X + Offset) / Scale.X), (int)(cursorPosition.Y / Scale.Y))));
     }
     else
     {
         return(context);
     }
 }