Sharing WPF Rendering between two applications

Viewed 20

I have a Dot-Net Core 6.0 Project which includes 2 wpf applications and a shared backend codebase

WPF Apps GMApp PlayerApp

Backend BackendAPI

Both use the same map rendering code to draw the the map on a Canvas object with the data displayed being determined by the collections of HexEntity objects supplied to the rendering function.

Ideally this shared code should be included in the BackendAPI library to avoid code duplication, however I am struggling with how to move these functions into the library because they use Windows presentation function calls (calls to Canvas, Rectangle, TextBox etc.).

An example function I want to move to this library is:


    internal void RenderMapGrid(Canvas canvasWorldMap, int cellSize, int worldHexCount)
    {
        for (int xPos = 0; xPos < worldHexCount; xPos++)
        {
            int delta = 0;
            if (xPos % 2 == 1) delta = cellSize / 2;
            for (int yPos = 0; yPos < worldHexCount; yPos++)
            {
                Rectangle cell = new Rectangle();
                cell.Stroke = new SolidColorBrush(Color.FromRgb(90, 90, 90));
                cell.StrokeThickness = 1;
                cell.Fill = new SolidColorBrush(Color.FromRgb(30, 30, 30));
                cell.Width = cellSize;
                cell.Height = cellSize;
                Canvas.SetLeft(cell, xPos * cellSize);
                Canvas.SetTop(cell, (yPos * cellSize) + delta);
                canvasWorldMap.Children.Add(cell);
            }
        }
    }

Is what I want to do posible, and if so how do I aproach this?

0 Answers
Related