New figures not coming properly

Hi walter

I am drawing new figures for my toolbox using your goxam nodeshape class.
here is the drawing for the two figures.

case NodeFigure.MCLSplitState:
return new PathGeometry()
{
Figures = new PathFigureCollection()
{
new PathFigure()
{
StartPoint = new Point(0.5, 0.5),
Segments = new PathSegmentCollection()
{
new LineSegment() { Point = new Point(0.5, h) },
new LineSegment() { Point = new Point(w, h) },
new LineSegment() { Point = new Point(w, 0.5) },
new LineSegment() { Point = new Point(0.5, 0.5)}

                     },                         

              IsClosed = true
            },
        
            new PathFigure()
            {
                StartPoint=new Point(100,30),
                Segments=new PathSegmentCollection()
                {
                 
                    new LineSegment(){Point=new Point(128,30)},
                    new LineSegment(){Point=new Point(128,25)},
                    new LineSegment(){Point=new Point(135,35)},
                    new LineSegment(){Point=new Point(128,43)},
                    new LineSegment(){Point=new Point(128,36)},
                    new LineSegment(){Point=new Point(100,36)}
                  
                },
            },
          new PathFigure()
            {
                StartPoint=new Point(100,70),
                Segments=new PathSegmentCollection()
                {                     
                    new LineSegment(){Point=new Point(128,70)},
                    new LineSegment(){Point=new Point(128,65)},
                    new LineSegment(){Point=new Point(135,75)},
                    new LineSegment(){Point=new Point(128,83)},
                    new LineSegment(){Point=new Point(128,76)},
                    new LineSegment(){Point=new Point(100,76)}                      
                },
            },  
          
          }
        };
    case NodeFigure.MCLMergeState:
        return new PathGeometry()
        {
            Figures = new PathFigureCollection()
             {                     
                 new PathFigure()
                 {                         
                     StartPoint = new Point(2.5, 2.5),
                     Segments = new PathSegmentCollection()
                     {
                         new LineSegment() { Point = new Point(2.5, h) },
                         new LineSegment() { Point = new Point(w, h) },
                         new LineSegment() { Point = new Point(w, 2.5) },
                         new LineSegment() { Point = new Point(2.5, 2.5)}
                       
                     },                         

              IsClosed = true
            },
            new PathFigure()
            {
                StartPoint=new Point(0,73),
                Segments=new PathSegmentCollection()
                {
                 
                    new LineSegment(){Point=new Point(-10,62)},
                    new LineSegment(){Point=new Point(-10,70)},
                    new LineSegment(){Point=new Point(-40,70)},
                    new LineSegment(){Point=new Point(-40,76)},
                    new LineSegment(){Point=new Point(-10,76)},
                    new LineSegment(){Point=new Point(-10,84)},
                  new LineSegment(){Point=new Point(0,73)}
                },
            },
             new PathFigure()
            {
                StartPoint=new Point(0,33),
                Segments=new PathSegmentCollection()
                {
                 
                    new LineSegment(){Point=new Point(-10,22)},
                    new LineSegment(){Point=new Point(-10,30)},
                    new LineSegment(){Point=new Point(-40,30)},
                    new LineSegment(){Point=new Point(-40,36)},
                    new LineSegment(){Point=new Point(-10,36)},
                    new LineSegment(){Point=new Point(-10,44)},
                  new LineSegment(){Point=new Point(0,33)}
                },
            },
             }
        };

Pls see the screenshots

NodeShapes have support for non-linear scaling. In other words, the geometry that is produced for a small shape is not the same as the geometry for a large shape even after it is scaled down.

I suggest that you multiply the “w” or “h” factors for every coordinate in the generation of your geometries. Right now in your code some X and Y values are multiplied by “w” and “h”, and many are not. I think you need to be consistent about that.