public static InvertY ( Matrix &matrix, double centerY ) : void | ||
matrix | Matrix | |
centerY | double | |
리턴 | void |
private static XamlMedia.Matrix CreatePointSymbolMatrix(double resolution, SymbolStyle symbolStyle) { var matrix = XamlMedia.Matrix.Identity; MatrixHelper.InvertY(ref matrix); var centerX = symbolStyle.SymbolOffset.X; var centerY = symbolStyle.SymbolOffset.Y; var scale = symbolStyle.SymbolScale; MatrixHelper.Translate(ref matrix, centerX, centerY); MatrixHelper.ScaleAt(ref matrix, scale, scale); //for point symbols we want the size to be independent from the resolution. We do this by counter scaling first. if (symbolStyle.UnitType != UnitType.WorldUnit) { MatrixHelper.ScaleAt(ref matrix, resolution, resolution); } MatrixHelper.RotateAt(ref matrix, -symbolStyle.SymbolRotation); return(matrix); }
private static XamlMedia.Matrix CreateTransformMatrix(Point point, IViewport viewport) { var matrix = XamlMedia.Matrix.Identity; var mapCenterX = viewport.Width * 0.5; var mapCenterY = viewport.Height * 0.5; var pointOffsetFromViewPortCenterX = point.X - viewport.Center.X; var pointOffsetFromViewPortCenterY = point.Y - viewport.Center.Y; MatrixHelper.Translate(ref matrix, pointOffsetFromViewPortCenterX, pointOffsetFromViewPortCenterY); if (viewport.IsRotated) { MatrixHelper.Rotate(ref matrix, -viewport.Rotation); } MatrixHelper.Translate(ref matrix, mapCenterX, mapCenterY); MatrixHelper.ScaleAt(ref matrix, 1 / viewport.Resolution, 1 / viewport.Resolution, mapCenterX, mapCenterY); // This will invert the Y axis, but will also put images upside down MatrixHelper.InvertY(ref matrix, mapCenterY); return(matrix); }