Exemple #1
0
        public static void DrawIntensity(this DrawingContext drawingContext, JmaIntensity intensity, Point point, double size, bool centerPosition = false, bool circle = false)
        {
            var halfSize = new Vector(size / 2, size / 2);
            var leftTop  = centerPosition ? point - halfSize : point;

            if (circle)
            {
                drawingContext.DrawEllipse((Brush)Application.Current.FindResource($"{intensity}Background"), null, centerPosition ? point : point + halfSize, size / 2, size / 2);
            }
            else
            {
                drawingContext.DrawRectangle((Brush)Application.Current.FindResource($"{intensity}Background"), null, new Rect(leftTop, new Size(size, size)));
            }

            switch (intensity)
            {
            case JmaIntensity.Int5Lower:
            {
                var brush = (Brush)Application.Current.FindResource($"Int5LowerForeground");
                drawingContext.DrawText(new FormattedText("5", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, brush, 1), new Point(leftTop.X + size * .1, leftTop.Y - size * .25));
                drawingContext.DrawText(new FormattedText("-", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size * .75, brush, 1), new Point(leftTop.X + size * .6, leftTop.Y - size * .27));
            }
                return;

            case JmaIntensity.Int5Upper:
            {
                var brush = (Brush)Application.Current.FindResource($"Int5UpperForeground");
                drawingContext.DrawText(new FormattedText("5", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, brush, 1), new Point(leftTop.X + size * .1, leftTop.Y - size * .25));
                drawingContext.DrawText(new FormattedText("+", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size * .75, brush, 1), new Point(leftTop.X + size * .5, leftTop.Y - size * .23));
            }
                return;

            case JmaIntensity.Int6Lower:
            {
                var brush = (Brush)Application.Current.FindResource($"Int6LowerForeground");
                drawingContext.DrawText(new FormattedText("6", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, brush, 1), new Point(leftTop.X + size * .1, leftTop.Y - size * .25));
                drawingContext.DrawText(new FormattedText("-", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size * .75, brush, 1), new Point(leftTop.X + size * .6, leftTop.Y - size * .27));
            }
                return;

            case JmaIntensity.Int6Upper:
            {
                var brush = (Brush)Application.Current.FindResource($"Int6UpperForeground");
                drawingContext.DrawText(new FormattedText("6", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, brush, 1), new Point(leftTop.X + size * .1, leftTop.Y - size * .25));
                drawingContext.DrawText(new FormattedText("+", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size * .75, brush, 1), new Point(leftTop.X + size * .5, leftTop.Y - size * .23));
            }
                return;

            case JmaIntensity.Unknown:
                drawingContext.DrawText(new FormattedText("-", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, (Brush)Application.Current.FindResource($"UnknownForeground"), 1), new Point(leftTop.X + size * .32, leftTop.Y - size * .3));
                return;

            case JmaIntensity.Error:
                drawingContext.DrawText(new FormattedText("*", CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, (Brush)Application.Current.FindResource($"ErrorForeground"), 1), new Point(leftTop.X + size * .25, leftTop.Y + size * .1));
                return;
            }
            drawingContext.DrawText(new FormattedText(intensity.ToShortString(), CultureInfo.CurrentUICulture, FlowDirection.LeftToRight, intensityFace, size, (Brush)Application.Current.FindResource($"{intensity}Foreground"), 1), new Point(leftTop.X + size * .22, leftTop.Y - size * .25));
        }
        /// <summary>
        /// 気象庁震度階級を長い形式の文字列に変換します。
        /// </summary>
        /// <param name="shindo">変換するShindo</param>
        /// <returns>変換された文字列</returns>
        public static string ToLongString(this JmaIntensity shindo)
        {
            switch (shindo)
            {
            case JmaIntensity.Error:
                return("震度異常");

            case JmaIntensity.Int0:
                return("震度0");

            case JmaIntensity.Int1:
                return("震度1");

            case JmaIntensity.Int2:
                return("震度2");

            case JmaIntensity.Int3:
                return("震度3");

            case JmaIntensity.Int4:
                return("震度4");

            case JmaIntensity.Int5Lower:
                return("震度5弱");

            case JmaIntensity.Int5Upper:
                return("震度5強");

            case JmaIntensity.Int6Lower:
                return("震度6弱");

            case JmaIntensity.Int6Upper:
                return("震度6強");

            case JmaIntensity.Int7:
                return("震度7");

            default:
                return("震度不明");
            }
        }
        /// <summary>
        /// 気象庁震度階級を短い形式の文字列に変換します。
        /// </summary>
        /// <param name="shindo">変換するShindo</param>
        /// <returns>変換された文字列</returns>
        public static string ToShortString(this JmaIntensity shindo)
        {
            switch (shindo)
            {
            case JmaIntensity.Error:
                return("異常");

            case JmaIntensity.Int0:
                return("0");

            case JmaIntensity.Int1:
                return("1");

            case JmaIntensity.Int2:
                return("2");

            case JmaIntensity.Int3:
                return("3");

            case JmaIntensity.Int4:
                return("4");

            case JmaIntensity.Int5Lower:
                return("5-");

            case JmaIntensity.Int5Upper:
                return("5+");

            case JmaIntensity.Int6Lower:
                return("6-");

            case JmaIntensity.Int6Upper:
                return("6+");

            case JmaIntensity.Int7:
                return("7");

            default:
                return("不明");
            }
        }