From f8aa26e9dc81a5bc00ca5003a4c0c1b7db3049d2 Mon Sep 17 00:00:00 2001 From: "Sean Kessler (Europa)" Date: Sun, 29 Jun 2025 21:30:47 -0400 Subject: [PATCH] Commit Latest --- PortfolioManager/Renderers/BollingerBandRenderer.cs | 3 ++- .../UIUtils/TextMarkerImageGenerator.cs | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/PortfolioManager/Renderers/BollingerBandRenderer.cs b/PortfolioManager/Renderers/BollingerBandRenderer.cs index 403418a..520c85e 100644 --- a/PortfolioManager/Renderers/BollingerBandRenderer.cs +++ b/PortfolioManager/Renderers/BollingerBandRenderer.cs @@ -239,7 +239,8 @@ namespace PortfolioManager.Renderers sb.Append(Utility.FormatCurrency(zeroPrice.Close)); double parityOffsetPercent = (latestPrice.Close - zeroPrice.Close) / zeroPrice.Close; sb.Append("(").Append(parityOffsetPercent < 0 ? "" : "+").Append(Utility.FormatPercent(parityOffsetPercent)).Append(")"); - image = TextMarkerImageGenerator.GenerateImage(sb.ToString(), 130, 24, FontFactor.FontSize); +// image = TextMarkerImageGenerator.GenerateImage(sb.ToString(), 130, 24, FontFactor.FontSize); + image = TextMarkerImageGenerator.GenerateImage(sb.ToString(), FontFactor.FontSize); coordinates = new Coordinates(dates[0].ToOADate() - offsets.Offset(OffsetDictionary.OffsetType.HorizontalOffset3PC), values[0] - offsets.Offset(OffsetDictionary.OffsetType.VerticalOffset5PC)); imageMarker = Plotter.Plot.Add.ImageMarker(coordinates, image); } diff --git a/PortfolioManager/UIUtils/TextMarkerImageGenerator.cs b/PortfolioManager/UIUtils/TextMarkerImageGenerator.cs index 1206708..00ff047 100644 --- a/PortfolioManager/UIUtils/TextMarkerImageGenerator.cs +++ b/PortfolioManager/UIUtils/TextMarkerImageGenerator.cs @@ -11,7 +11,7 @@ public static class TextMarkerImageGenerator public static Image GenerateImage(String text,int width=130, int height=24, int fontSize=12) { ImageHelper imageHelper = new ImageHelper(); - imageHelper.CreateImage(width, height); //, new PointMapping(width,height,width,0,height,0)); + imageHelper.CreateImage(width, height); imageHelper.Fill(SKColors.White); SKTextAlign align = SKTextAlign.Center; SKFont font = new SKFont(SKTypeface.FromFamilyName("Arial",500,5,SKFontStyleSlant.Upright), fontSize); @@ -20,7 +20,18 @@ public static class TextMarkerImageGenerator imageHelper.DrawLine(SKColors.Black,1, new SKPoint(0,height-1), new SKPoint(width-1,height-1)); // top left to right imageHelper.DrawLine(SKColors.Black,1, new SKPoint(0,height-1), new SKPoint(0,0)); // left hand side top to bottom imageHelper.DrawText(text, new SKPoint(width / 2, height-8), SKColors.Black, align, font); + using MemoryStream memoryStream = new MemoryStream(); + imageHelper.ToStream().CopyTo(memoryStream); + return new ScottPlot.Image(memoryStream.ToArray()); + } + public static Image GenerateImage(String text,int fontSize=12) + { + ImageHelper imageHelper = new ImageHelper(); + // SKFont font = new SKFont(SKTypeface.FromFamilyName(familyName: "Helvetica", weight: SKFontStyleWeight.Normal, width: SKFontStyleWidth.UltraCondensed, slant: SKFontStyleSlant.Italic), fontSize, .75f); + SKFont font = new SKFont(SKTypeface.FromFamilyName("Helvetica",500,5,SKFontStyleSlant.Upright), fontSize); + SKTextAlign align = SKTextAlign.Left; + imageHelper.CreateBoundedText(text, SKColors.Black, SKColors.White, align, font); using MemoryStream memoryStream = new MemoryStream(); imageHelper.ToStream().CopyTo(memoryStream); return new ScottPlot.Image(memoryStream.ToArray());