Jump to content

Any way to get the shape files for the shapes that come with paint.net into shapemaker?


Recommended Posts

I am still a relatively new paint.net user...scratch that, I AM a new paint.net user. I downloaded paint.net a few days ago with the intention of creating speech bubbles to use for my pics, After completely missing the shape tool and downloading dpy's speech bubble plugin, liking the plugin for the most part and then learning you actually can do the speech bubbles with the shape tool after I was somewhat disappointed by the limited options for the speech bubble plugin's tail options, I was wondering, using the shapemaker, is there a way to get the shapes into there so I can create speech bubbles with more tail options easily without having to try drawing? (I suck at drawing...at least, I think I do, so I'd rather use premade tools)

Link to post
Share on other sites

Hello @Sonario648 and Welcome to the forum :)

 

I note you already have dpy's Plugin, but, FYI - you can find additional Shapes here.

 

If you have a speech bubble you like, but want to re-draw/add to it, you can open it in paint.net, then go to Shapemaker and use the drawing aids to create your own.

 

 

Shape-to-Shapemaker.png

 

This is a great video to show you how Shapemaker works.

 

 

 

 

 

30b8T8B.gif

How I made Jennifer & Halle in Paint.net

My Gallery | My Deviant Art

"Rescuing one animal may not change the world, but for that animal their world is changed forever!" anon.

 
Link to post
Share on other sites
  • 1 year later...

Most of the built-in shapes are defined in code, not with XAML like the plugin shapes.

 

e.g. here's the Heart shape's code

internal sealed class HeartShape
    : PdnGeometryShapeBase
{
    private static Geometry unitGeometry;
    private static Geometry UnitGeometry
    {
        get
        {
            if (unitGeometry == null)
            {
                unitGeometry = CreateUnitGeometry().EnsureFrozen();
            }

            return unitGeometry;
        }
    }

    public HeartShape()
        : base(PdnResources.GetString("HeartShape.Name"), ShapeCategory.Symbols)
    {
    }

    protected override Geometry OnCreateGuideGeometry(RectDouble bounds, IDictionary<string, object> settingValues)
    {
        return UnitGeometry;
    }

    private static Geometry CreateUnitGeometry()
    {
        PathGeometry unitGeometry = new PathGeometry();
        {
            PathFigure figure = new PathFigure();
            {
                figure.IsClosed = true;

                figure.StartPoint = new Point2Double(11.5, 20.5834);

                figure.Segments.Add(new BezierSegment(new Point2Double(10.3333, 16.25), new Point2Double(13.6667, 12.9167), new Point2Double(16.5, 12.4167)));
                figure.Segments.Add(new BezierSegment(new Point2Double(19.3334, 11.9167), new Point2Double(21.6667, 14.25), new Point2Double(24, 16.5833)));
                figure.Segments.Add(new BezierSegment(new Point2Double(26.3334, 14.25), new Point2Double(28.6667, 11.9167), new Point2Double(31.5, 12.4167)));
                figure.Segments.Add(new BezierSegment(new Point2Double(34.3333, 12.9167), new Point2Double(37.6666, 16.25), new Point2Double(36.5, 20.5833)));
                figure.Segments.Add(new BezierSegment(new Point2Double(35.3333, 24.9167), new Point2Double(29.6667, 30.25), new Point2Double(24, 35.5833)));
                figure.Segments.Add(new BezierSegment(new Point2Double(18.3334, 30.25), new Point2Double(12.6667, 24.9167), new Point2Double(11.5, 20.5834)));
            }

            unitGeometry.Figures.Add(figure);
        }

        return unitGeometry;
    }
}

 

A few of them do use the path mini-language, but that's usually avoided for performance reasons. Some shapes are weird/complex enough that it's better to use it though, e.g. the Gear shape creates its geometry like so,

 

        private static Geometry CreateUnitGeometry()
        {
            return new FlattenedGeometry()
            {
                FlatteningTolerance = 0.0001,
                Geometry = Geometry.Parse(
                    // Gear outline
                    @"F1
                      M 37.6289,0 
                      L 49.6289,-0.000976563 
                      L 52.8506,10.8311 
                      C 55.3838,11.5439 
                        57.7979,12.542 
                        60.0557,13.79 
                      L 70.0654,8.37012
                      L 78.5518,16.8545 
                      L 73.1934,26.749 
                      C 74.4844,29.0117 
                        75.5234,31.4365 
                        76.2725,33.9863 
                      L 87.251,37.252 
                      L 87.251,49.252 
                      L 76.4746,52.457
                      C 75.7588,55.1113 
                        74.7295,57.6377 
                        73.4297,59.9932 
                      L 78.8838,70.0645 
                      L 70.3994,78.5518 
                      L 60.4404,73.1582 
                      C 58.0811,74.5029 
                        55.5439,75.5732 
                        52.875,76.3252 
                      L 49.624,87.2549
                      L 37.624,87.2549 
                      L 34.373,76.3232 
                      C 31.7061,75.5713 
                        29.1729,74.501 
                        26.8145,73.1572 
                      L 16.8574,78.5488 
                      L 8.37207,70.0635 
                      L 13.8262,59.9912
                      C 12.5264,57.6357 
                        11.498,55.1113 
                        10.7822,52.458 
                      L 0,49.251 
                      L 0,37.251 
                      L 10.9854,33.9834 
                      C 11.7334,31.4365 
                        12.7715,29.0137 
                        14.0615,26.7529
                      L 8.70313,16.8564 
                      L 17.1885,8.37012 
                      L 27.1982,13.791 
                      C 29.4561,12.542 
                        31.8721,11.543 
                        34.4072,10.8311 Z" +
                    // Inner circle
                    @"M    43.62644869,59.92630997
                      C    52.62744869,59.92630997
                        59.92434869,52.62740997
                        59.92434869,43.62740997
                      C    59.92434869,34.62650997
                        52.62744869,27.32760997
                        43.62644869,27.32760997
                      C    34.62644869,27.32760997
                        27.32664869,34.62650997
                        27.32664869,43.62740997
                      C    27.32664869,52.62740997
                        34.62644869,59.92630997
                        43.62644869,59.92630997 Z")
            };
        }

 

(some of the spacing/indentation got muddled, of course)

The Paint.NET Blog: https://blog.getpaint.net/

Donations are always appreciated! https://www.getpaint.net/donate.html

forumSig_bmwE60.jpg

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...