Sonario648 Posted October 18, 2018 Posted October 18, 2018 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) Quote
Pixey Posted October 18, 2018 Posted October 18, 2018 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. This is a great video to show you how Shapemaker works. Quote 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.
Rick Brewster Posted September 29, 2020 Posted September 29, 2020 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) Quote The Paint.NET Blog: https://blog.getpaint.net/ Donations are always appreciated! https://www.getpaint.net/donate.html
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.