private void ComputeViewPort() { var pixelToEightsRatioX = _parcelSizeLong.GetAsEightSeconds() / CurrentScale.ParcelSize; var pixelToEightsRatioY = _parcelSizeLat.GetAsEightSeconds() / CurrentScale.ParcelSize; _viewportHeight = new GeoCord(pixelToEightsRatioY * _canvas.ActualHeight / 8); _viewportWidth = new GeoCord(pixelToEightsRatioX * _canvas.ActualWidth / 8); }
public void SetupTransform(GeoCord viewportCenterLong, GeoCord viewportCenterLat, GeoCord viewportWidth, GeoCord viewportHeight) { var pixelToEightsRatioX = _parcelWidth.GetAsEightSeconds() / _parcelScreenSize; var pixelToEightsRatioY = _parcelHeight.GetAsEightSeconds() / _parcelScreenSize; var offsetFromCenterX = viewportWidth.Divide(2) + _parcelX - viewportCenterLong; var offsetFromCenterY = viewportHeight.Divide(2) - _parcelY + viewportCenterLat; var offsetX = offsetFromCenterX.GetAsEightSeconds() / pixelToEightsRatioX; var offsetY = offsetFromCenterY.GetAsEightSeconds() / pixelToEightsRatioY; var transformGroup = new System.Windows.Media.TransformGroup(); transformGroup.Children.Add(new System.Windows.Media.ScaleTransform(1, -1)); transformGroup.Children.Add(new System.Windows.Media.TranslateTransform(offsetX, offsetY)); _image.RenderTransform = transformGroup; }