Version 1.1.9: Support for mouse wheel events with delta values less than the default of 120. Added static field Tile.AnimationDuration. Fixed tile grid calculation with x values less than zero.

This commit is contained in:
ClemensF 2013-03-15 18:08:51 +01:00
parent b1bfccd321
commit 35fc959034
15 changed files with 31 additions and 26 deletions

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -29,7 +29,8 @@ namespace MapControl
private void OnMouseWheel(object sender, MouseWheelEventArgs e) private void OnMouseWheel(object sender, MouseWheelEventArgs e)
{ {
ZoomMap(e.GetPosition(this), TargetZoomLevel + MouseWheelZoomChange * Math.Sign(e.Delta)); var zoomChange = MouseWheelZoomChange * (double)e.Delta / MouseWheelDelta;
ZoomMap(e.GetPosition(this), TargetZoomLevel + zoomChange);
} }
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)

View file

@ -37,7 +37,8 @@ namespace MapControl
private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e) private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e)
{ {
var point = e.GetCurrentPoint(this); var point = e.GetCurrentPoint(this);
ZoomMap(point.Position, TargetZoomLevel + MouseWheelZoomChange * Math.Sign(point.Properties.MouseWheelDelta)); var zoomChange = MouseWheelZoomChange * (double)point.Properties.MouseWheelDelta / MouseWheelDelta;
ZoomMap(point.Position, TargetZoomLevel + zoomChange);
} }
private void OnPointerPressed(object sender, PointerRoutedEventArgs e) private void OnPointerPressed(object sender, PointerRoutedEventArgs e)

View file

@ -9,6 +9,8 @@ namespace MapControl
/// </summary> /// </summary>
public partial class Map : MapBase public partial class Map : MapBase
{ {
private const double MouseWheelDelta = 120;
/// <summary> /// <summary>
/// Gets or sets the amount by which the ZoomLevel property changes during a MouseWheel event. /// Gets or sets the amount by which the ZoomLevel property changes during a MouseWheel event.
/// </summary> /// </summary>

View file

@ -16,6 +16,6 @@ using System.Windows;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -13,6 +13,8 @@ namespace MapControl
{ {
public partial class Tile public partial class Tile
{ {
public static TimeSpan AnimationDuration = TimeSpan.FromSeconds(0.5);
public readonly int ZoomLevel; public readonly int ZoomLevel;
public readonly int X; public readonly int X;
public readonly int Y; public readonly int Y;
@ -42,7 +44,7 @@ namespace MapControl
return new DoubleAnimation return new DoubleAnimation
{ {
To = 1d, To = 1d,
Duration = TimeSpan.FromSeconds(0.5), Duration = AnimationDuration,
FillBehavior = FillBehavior.HoldEnd, FillBehavior = FillBehavior.HoldEnd,
}; };
} }

View file

@ -22,8 +22,6 @@ namespace MapControl
protected void RenderTiles() protected void RenderTiles()
{ {
//System.Diagnostics.Trace.TraceInformation("{0} Tiles: {1}", tiles.Count, string.Join(", ", tiles.Select(t => t.ZoomLevel.ToString())));
using (var drawingContext = RenderOpen()) using (var drawingContext = RenderOpen())
{ {
foreach (var tile in tiles) foreach (var tile in tiles)

View file

@ -119,8 +119,8 @@ namespace MapControl
for (var z = minZoomLevel; z <= maxZoomLevel; z++) for (var z = minZoomLevel; z <= maxZoomLevel; z++)
{ {
var tileSize = 1 << (zoomLevel - z); var tileSize = 1 << (zoomLevel - z);
var x1 = grid.X / tileSize; var x1 = (int)Math.Floor((double)grid.X / (double)tileSize);
var x2 = (grid.X + grid.Width - 1) / tileSize; var x2 = (int)Math.Ceiling((double)(grid.X + grid.Width - 1) / (double)tileSize);
var y1 = Math.Max(0, grid.Y / tileSize); var y1 = Math.Max(0, grid.Y / tileSize);
var y2 = Math.Min((1 << z) - 1, (grid.Y + grid.Height - 1) / tileSize); var y2 = Math.Min((1 << z) - 1, (grid.Y + grid.Height - 1) / tileSize);
@ -134,7 +134,8 @@ namespace MapControl
{ {
tile = new Tile(z, x, y); tile = new Tile(z, x, y);
var equivalentTile = tiles.FirstOrDefault(t => t.ImageSource != null && t.ZoomLevel == z && t.XIndex == tile.XIndex && t.Y == y); var equivalentTile = tiles.FirstOrDefault(
t => t.ImageSource != null && t.ZoomLevel == z && t.XIndex == tile.XIndex && t.Y == y);
if (equivalentTile != null) if (equivalentTile != null)
{ {

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]

View file

@ -10,7 +10,7 @@ using System.Windows;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]

View file

@ -10,7 +10,7 @@ using System.Windows;
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")] [assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.1.8")] [assembly: AssemblyVersion("1.1.9")]
[assembly: AssemblyFileVersion("1.1.8")] [assembly: AssemblyFileVersion("1.1.9")]
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] [assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]