Search the Community

Showing results for tags 'artistic'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Information
    • Forum Rules
    • Paint.NET Search
    • Official Paint.NET website
    • Help Files (the official paint.net documentation)
  • Paint.NET
    • Paint.NET Discussion and Questions
    • The Pictorium
    • Tutorials - Publishing ONLY!
    • Competitions
    • Plugins - Publishing ONLY!
    • Troubleshooting & Bug Reports
  • Off-Topic
    • Grand Theory of Everything
  • Paint.NET Programming / Development
    • Plugin Developer's Central
    • Preview Center
    • Translation and Localization

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


AIM


MSN


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 24 results

  1. This effect is a result of a writing by me 'Scratch Art Style in Paint.NET' tutorial. You can find it: Effects -> Artistic -> Scratch Art ScratchArt.zip (Previously downloads: 1350) This effect simulates the Scratch Art style. The result of the effect's work: Before: After:
  2. I built this plugin to fulfill this request: https://forums.getpaint.net/topic/115092-possible/ Trace works like Ink Sketch and similar plugins, but unlike them the amount of artifacts is a lot lower and you can fine-tune things quite a bit. It works really really good with images that are solid colors (or close), for example logos, children's book covers, anything material design. With more complex images you get more artifacts, although there tend to be less of those than normal. In any case, let's take a look at the plugin: Distance -- included mostly for completeness. This will make the tracelines bigger because the pixels being searched are further out -- it's more of an artistic effect than something practical. Threshold -- determines how different a pixel and its neighbors must be in order for that pixel to turn black. Lower thresholds mean traces are more likely to happen, higher thresholds make them less likely. Minimum Neighbors -- the plugin works by comparing each pixel to all eight of its nearest neighbors. By default, if even one of those neighbors is different, the pixel will turn black. By moving this slider up, your trace lines become thinner and you get more accurate detail because more neighbors have to be different. I recommend decreasing the threshold when you increase this slider. Black on Alpha -- By default, the destination image is a bunch of black lines on a white background. If you click this, they'll instead be black lines on alpha, allowing you to do feathering or whatever else you want to do. Preserve Original -- This will combine the lines with the original image, basically giving it an internal outline according to your specifications. I'm not going to look at every setting because most of them are self-explanatory, but I will cover the more arbitrary ones. First, a base image. I've used a collection of windows logos because they meet the "solid colors, less complex image" standard that this plugin works best with. Here's your default settings. Not perfect by any means, but compared to other sketch plugins, it's extremely extremely smooth, bold, and you can actually adjust it to show what you want to show. By adjusting the Minimum Neighbors and Threshold settings you can get more of the image to show. There are some artifacts, but again they're quite low compared to other plugins. I went back to the default settings and clicked "Preserve Original Image" -- now you have the original image but it's just outlined better. Download https://github.com/Xhin23/Paint.net-Plugins/blob/master/Trace.dll
  3. I was looking for a plugin to create a box-fitting image and didn't see any, so I decided to try writing my own. And here it is. Would appreciate any suggestions on how it could be improved etc.. Controls: Max Box Size: Really the max possible size, the boxes tend to be much smaller .. Some interesting effects if size is very low. Reseed: Not that mysterious, just press to randomize the boxes until you get the effect you want. Stroke Color: The color outside the boxes. (Found under Artistic menu) New version! V1.1 boxfitting.zip
  4. This is a plugin which helps you to create symmetric mandalas and mirrored pictures. It takes the upper right triangle(as shown in the first picture) as an input and mirrors it to the other ones. It only works for square images (image width = image height) currently! Download newest version here: Mandala Creator.zip To install just extract the zip and run the installer. It will be installed under effects in the subfolder Artistic. Example for 4 Mirror Option Results If you enjoyed this plugin and would like to support me, click this button: Thank you! Older Versions: Mandala Creator.zip (Version 1.0)
  5. This plugin can be used to add a texture effect to a photo. Examples: It can also be used to add a watermark to a picture: Download: https://www.fosshub.com/Image-Analyzer.html?dwl=TexturizePDN1.1.0.1.zip Texturize.zip Unzip the file in the Paint.NET\Effects folder or Documents\paint.net App Files\Effects if PDN was installed from the Windows Store. You can access the feature from the Effects | Artistic menu. Tips: It is quite easy to find usable textures via Google's image search. You can even copy-paste pictures directly from your browser to the plugin: Just right-click on the wanted texture and select Copy. Sometimes you may want to convert the texture to grayscale before using it. If the texture is not tilable (the left edge fits the right edge and the top fits the button) you should select set Fill method to Mirror. You can use a negative Amplitude to invert the 3D effect, i.e. make the texture go "in" or "out". If you like this, please consider donating to the author at http://meesoft.logicnet.dk/Analyzer/support.htm
  6. Hi All, Here's my Mosaic effect. (A full list of my effects is here.) Mosaic - Version 1.3.0.0 - 27 February 2017 ©Copyright Tim Mathias 2017. All rights reserved. USE AT YOUR OWN RISK. Menu: Effects -> Artistic -> Mosaic... LavEnt.Effects.Mosaic.1.3.0.0.zip Before After The Mosaic effect converts a drawing into a mosaic pattern and uses the Secondary colour as the adhesive or grout between the tesserae. Tessera Width: 2px to 100px Tessera Height: 2px to 100px Tessera Colour: Centre spot sample or average. Tessera Shape Irregularity: 0% (square) to 50% of tessera side length. Adhesive Thickness: 0px to 50px. Antialias: On or off. Possible enhancements I might add in future: Mathematical formulae to generate the mosaic pattern; at the moment it just uses a random irregularity based on a square shape. Fully transparent Secondary colour so that the underlying image shows through the gaps between tessarae. Tip: Try using a dark semi-transparent Secondary colour for the adhesive. Version 1.3.0.0 - 27 February 2017: Recompiled for .NET 4.6.1. Version 1.1.0.0 - 14 May 2009: Added a lock statement to prevent multiple simultaneous renders. Version 1.0.0.0 - 30 March 2009 (813 downloads): Original.
  7. Name: ArtyThing Description: Uses the 'tone gradient' (edges) of an image to render paths imitating various artistic media. Keywords: artistic, watercolour, oilpaint, pastels, pencils, crayon, sketch, outlines, craquelure, drawing, textures Menu: Effects/Artistic Original release date: 3rd February 2016 Author: Red ochre (John Robbins) .dll name: ArtyThing Compatibility: tested on Pdn 3.5.11 and Pdn 4.0.9 Artything is now in my new v10 pack here: Red ochre plugin pack v10 I wouldn't advise using it on images larger than 1000 pixels square and do be careful when increasing the repetitions, length and stride controls. I do advise saving all work before running it as some combinations of image and settings can cause it to take a very long time. However it is reasonably quick when used correctly. There are many examples below that will hopefully give you some ideas on how to use it. The more complex results (without the settings shown) are where I have run it on multiple copies of the original image in layers. Tip: Using the surface blur or Gaussian blur beforehand often gives good results. Please post your results in this thread... I haven't fully explored what it can do yet, so would love to see what you can come up with! http://i.imgur.com/jj8AflC.png http://i.imgur.com/x0FgdDa.png http://i.imgur.com/bMrVMyJ.png http://i.imgur.com/cXZRpJa.png http://i.imgur.com/2tjkmEE.png http://i.imgur.com/t9DoKV9.png http://i.imgur.com/el7M30z.png http://i.imgur.com/91BzgHv.png http://i.imgur.com/0zxQt2U.png http://i.imgur.com/lbI1p0t.png http://i.imgur.com/hBxJrEg.png http://i.imgur.com/uaDGVn3.png http://i.imgur.com/Tg3lQOw.png http://i.imgur.com/G7fee0F.png http://i.imgur.com/zh3u9Sd.png http://i.imgur.com/o11jsuS.png http://i.imgur.com/rzkmB1e.png http://i.imgur.com/o5KJaVO.png http://i.imgur.com/Ti6XI1J.png http://i.imgur.com/lsUAR1J.png http://i.imgur.com/OxGB49k.png http://i.imgur.com/147CMml.png http://i.imgur.com/eo9rpku.png http://i.imgur.com/LPbWiRu.png http://i.imgur.com/VfgvX7g.png http://i.imgur.com/MD2MSYT.png
  8. MODERATORS NOTE: this plugin may not be fully compatible with paint.net v4 I'd like to introduce a new plug-in I call "Mosaic Maniac Collage Paint" This is an early release and I still know of a couple of bugs, but do let me know if you find some. I'm interested in your comments and suggestions. Peter Lukaszuk (Original text found at http://mosaicmaniac.com/Ajax.aspx?c=TabPlugin) Did you ever want to paint using more than a single color or image? Now you can paint with whole collections of images. The plug-in creates a unique non repeatable pattern that closely tries to match the background. Image distribution is based on latest pattern recognition and image matching techniques. Shapes, colors, brightness, as well as many other factors determine where the image is placed. This is an example of pattern collage. The main image of a Jukebox is painted over with collection of music album covers. Notice how the dark images cover the dark areas, yellow cover yellow etc. Tutorial: Step 1: Select an image we will paint on. Using Magic Wand, select an area to paint on. Step 2: From Effects menus select "Artistic" and "Collage Paint" Step 3: You will see a "Mosaic Maniac Collage Paint Options" dialog. Browse for the folder containing your images. All images in the folder will be used. If you want to use only certain images you'll have to create folders and copy only the images you want to use. All images are sized down and only their thumbnails used in pattern painting. "Maximum image size in pixels" textbox specifies that size. Leave the "Rotate images" checkbox checked. All images used will be rotated randomly. Uncheck this field if you are painting a photomosaic. Step 4: Adjust Hue and Transparency for the desired result. Hue Adjustment requires reprocessing and takes some time. Step 5: Voila! Put some leaves on the road and we really managed to mess this nice picture up. Images used in the example can be downloaded from: http://mosaicmaniac.com/download/Flowers.zip http://mosaicmaniac.com/download/Fall%20Leafs.zip Installation: PDN 3.5 Alpha should work now! To install Mosaic Maniac Collage Paint plugin for Paint.NET download the MosaicManiac.dll and copy it to C:\Program Files\Paint.NET\Effects directory. Get the latest one right here. Version 1.0.0906.08 MosaicManiacPaintDotNet.zip
  9. This effect is a result of a writing by me 'Create the Dragan effect in Paint.NET' tutorial. You can find it: Effects -> Artistic -> Dragan Effect DraganEffect_en.zip DraganEffect_ru.zip This effect simulates the Dragan's style for photos. The result of the effect's work: Before: After: Also see: CodeLab - First Steps (Dragan Effect).
  10. I know mosaic effects have been done before, but hopefully this one is different enough that someone will find it useful. Uses path brush settings. (Found under Artistic) User Interface: Control size: Sliders determine average size of tiles in pixels. Otherwise they determine how many tiles across and down. Tesserae across & Tesserae down: will also affect image due to changes in sampling. lock: when selected, the above sliders will be locked together. Tile irregularity: variation from square tiles to more irregular. Cement Thickness: pixel width between tiles. Cement Color: color between tiles. Reseed: generates new random tile shapes Blend Factors/Positions: These affect the path brush, Something to experiment with. AntiAlias: Does what it says, hopefully Here's an example of a more abstract effect with different brush settings: Tesserae.zip
  11. This plugin is a part of the "Jesse Chunn Plugin Pack" and can be downloaded here This plugin will turn an image (or selection) into a two color image similar to a stencil. Settings: Bias: More primary color or more secondary color. Invert: Swap primary and secondary colors. The left side of these images are the original, the right side had "Stencil" applied with default settings (different primary and secondary colors): Enjoy, Jesse Chunn
  12. Scribble Can change a photographic image to look like a hand drawn picture. Many presets including; coloured pencil drawing, graphite pencil, cross-hatched ink and scratchboard. Also the ability to save your own presets. Found under:Effects/Artistic/Scribble Dll name = Scribble It is now included in my plugin pack. *If you have a high d.p.i. machine this version may not display correctly, please use the beta version instead. beta Scribble The user interface (U.I.) is shown below, along with some examples of what it can do. I have found it works well on images of approximately 1000 by 750 pixels or smaller and it is best to keep the 'Rep count' and 'Length multiplier' sliders reasonably low whilst adjusting the effect. The 'Toneband' slider reduces the number of seperate colours in an image. Think of it as the number of different pencils used when the coloured or graphite pencil option is selected. Please feel free to post any scibble images you are pleased with and an idea of the settings you used. Credits Null54 did a wonderful job adding the ability to load and save presets, yet still keeping the controls 'tweakable'. The plugin is based on my 'Furblur' effect, which also relied on code supplied by Null54. So many thanks! E.E.R has also helped with his explanations of how a custom U.I. works and TR's encouragement helped me get it finished! http://i.imgur.com/bNAJtj3.png http://i.imgur.com/ifIXMUW.png http://i.imgur.com/BwDqYf5.png http://i.imgur.com/3fgeZZM.png http://i.imgur.com/EYA2KkJ.png http://i.imgur.com/rqjCiYj.png http://i.imgur.com/avRehJH.png http://i.imgur.com/BkBihHg.png http://i.imgur.com/bS3UE1t.png http://i.imgur.com/XbIRUta.png http://i.imgur.com/n5NB6PY.png http://i.imgur.com/yKGs6ck.png http://i.imgur.com/FK5s9VK.png http://i.imgur.com/DyRTJKx.png http://i.imgur.com/2Qm776K.png http://i.imgur.com/cad3bWB.png
  13. Oil Painting+ a new artistic plugin The Idea I was never quite happy with the output of the built-in Oil Painting effect: The built-in Median effect flows better, but also has some problems: I do like mixing the output from my Pastel plugin: ...with the built-in Pencil Sketch effect: That's where I started... The Result I combined the best parts of Oil Painting, Median, Pastel, and Pencil Sketch: Download This is now part of my plugin pack which you can download here: http://forums.getpaint.net/index.php?/topic/32048-v It is designed for small images, like the ones you see in this thread. So, reduce the size of your image before running the effect. Enjoy! __________________________
  14. This effect is a result of a writing by me CodeLab - First Steps (Color Sketch) tutorial. You can find it: Effects -> Artistic -> Color Sketch Compatible with both: v3.5.X and v4.0.X ColorSketch_en.zip ColorSketch_ru.zip This effect simulates a sketch by color pencils and similar built-in Pencil Sketch effect. The result of the effect's work: Before: After:
  15. Download from my plugin set Effects -> Artistic -> Splatter =========================USE==================== Just click and drag the mouse on the dialog. ================================================= Previously known as Pineapple. Make splatters. Byaah! You can adjust some of the settings to make some pretty weird looking stuff. You can also enable/disable antialiasing. Just click the Options button. Examples? Examples! Download from my plugin set
  16. This effect is a result of a writing by me CodeLab - First Steps (Sponge) and How it's made (Sponge effect) tutorials. You can find it: Effects -> Artistic -> Sponge This effect simulates painting with a sponge. It has a simple and intuitive interface. Compatible only with v4.0.6+ Sponge12_en.zip Sponge12_ru.zip EDIT: Each archive contains two files: Sponge_en(or ru).dll and Install_Sponge.bat. Unzip the files in any directory (for example, on the desktop) and double-click on the Install_Sponge.bat file - it will install the dll file in the appropriate directory. Before: After:
  17. Technorobbo's DoodleMatic V1.4 A Dynamic Edge Finder Version 1.4 Optimized for Paint.Net 4.0 Version 1.3 Uses YUV Colorspace for more intuitive edge detection 1 Slider for detail selection. Adjust drawing Width Added Cursor http://forums.getpaint.net/index.php?/topic/27154-trs-doodlematic-v13-oct-9th-2013/?p=398438 Version 1.2 - 16 levels of Undo Version 1.1 Undo added Menu: Effects->Artistic Demo best viewed in 1080p at http://youtu.be/q_JgUFF0Peg Music by TechnoRobbo Here's a video on how Wilkommen (and Autumn) were created http://youtu.be/fC9ivyWHpiw music by TechnoRobbo(yes that's my falsetto) Willkommen Amsterdam used TR's Scatter to give that pastel look Autumn The Code Hidden Content: // Compiler options: /unsafe /optimize /debug- /target:library /out:"C:\Program Files\Paint.NET\Effects\TRsDoodleMatic.dll" using System; using System.Text; using System.Windows; using System.Reflection; using System.Windows.Forms; using PaintDotNet; using PaintDotNet.Effects; using PaintDotNet.IndirectUI; using PaintDotNet.PropertySystem; using System.Collections.Generic; using System.Drawing; using System.Drawing.Text; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("TRsDoodleMaticPlugin")] [assembly: AssemblyDescription("TRsDoodleMatic Plugin for Paint.NET. (Compiled by Code Lab v1.8)")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("TechnoRobbo")] [assembly: AssemblyProduct("TRsDoodleMaticPlugin")] [assembly: AssemblyCopyright("Copyright © TechnoRobbo")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] [assembly: AssemblyVersion("1.4.*")] namespace TRsDoodleMaticEffect { public class PluginSupportInfo : IPluginSupportInfo { public string Author { get { return "TechnoRobbo"; } } public string Copyright { get { return ((AssemblyCopyrightAttribute)base.GetType().Assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false)[0]).Copyright; } } public string DisplayName { get { return ((AssemblyProductAttribute)base.GetType().Assembly.GetCustomAttributes(typeof(AssemblyProductAttribute), false)[0]).Product; } } public Version Version { get { return base.GetType().Assembly.GetName().Version; } } public Uri WebsiteUri { get { return new Uri("http://www.technorobbo.com"); } } } [PluginSupportInfo(typeof(PluginSupportInfo), DisplayName = "TRsDoodleMatic")] public class TRsDoodleMaticEffectPlugin : PropertyBasedEffect { public static string StaticName { get { return "TR's DoodleMatic"; } } public static Image StaticIcon { get { return null; } } public TRsDoodleMaticEffectPlugin() : base(StaticName, StaticIcon, SubmenuNames.Artistic, EffectFlags.Configurable) { instanceSeed = unchecked((int)DateTime.Now.Ticks); } public enum PropertyNames { Amount1, Amount2, Amount3, Amount4, Amount5, Amount6, Amount7, Amount8, Amount9 } [ThreadStatic] private static Random RandomNumber; private int randomSeed; private int instanceSeed; protected override PropertyCollection OnCreatePropertyCollection() { List<Property> props = new List<Property>(); props.Add(new DoubleProperty(PropertyNames.Amount1, 0.05, 0, 1)); props.Add(new Int32Property(PropertyNames.Amount2, 0, 0, 10)); props.Add(new DoubleVectorProperty(PropertyNames.Amount3, Pair.Create(0.0, 0.0), Pair.Create(-1.0, -1.0), Pair.Create(+1.0, +1.0))); props.Add(new Int32Property(PropertyNames.Amount4, ColorBgra.ToOpaqueInt32(ColorBgra.FromBgra(EnvironmentParameters.PrimaryColor.B, EnvironmentParameters.PrimaryColor.G, EnvironmentParameters.PrimaryColor.R, 255)), 0, 0xffffff)); props.Add(new Int32Property(PropertyNames.Amount5, ColorBgra.ToOpaqueInt32(ColorBgra.FromBgra(EnvironmentParameters.SecondaryColor.B, EnvironmentParameters.SecondaryColor.G, EnvironmentParameters.SecondaryColor.R, 255)), 0, 0xffffff)); props.Add(new Int32Property(PropertyNames.Amount6, 0, 0, 255)); props.Add(new BooleanProperty(PropertyNames.Amount7, false)); props.Add(new Int32Property(PropertyNames.Amount8, 0, 0, 255)); props.Add(new BooleanProperty(PropertyNames.Amount9, false)); return new PropertyCollection(props); } protected override ControlInfo OnCreateConfigUI(PropertyCollection props) { ControlInfo configUI = CreateDefaultConfigUI(props); configUI.SetPropertyControlValue(PropertyNames.Amount1, ControlInfoPropertyNames.DisplayName, "Small Detail/Small Pen ---------------------------Large Detail/Full Page"); configUI.SetPropertyControlValue(PropertyNames.Amount1, ControlInfoPropertyNames.SliderLargeChange, 0.25); configUI.SetPropertyControlValue(PropertyNames.Amount1, ControlInfoPropertyNames.SliderSmallChange, 0.05); configUI.SetPropertyControlValue(PropertyNames.Amount1, ControlInfoPropertyNames.UpDownIncrement, 0.01); configUI.SetPropertyControlValue(PropertyNames.Amount2, ControlInfoPropertyNames.DisplayName, "Line Width"); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.DisplayName, "Doodle Pad (Hold CTRL to Doodle)"); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.SliderSmallChangeX, 0.05); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.SliderLargeChangeX, 0.25); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.UpDownIncrementX, 0.01); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.SliderSmallChangeY, 0.05); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.SliderLargeChangeY, 0.25); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.UpDownIncrementY, 0.01); Surface sourceSurface3 = this.EnvironmentParameters.SourceSurface; Bitmap bitmap3 = sourceSurface3.CreateAliasedBitmap(); ImageResource imageResource3 = ImageResource.FromImage(bitmap3); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.StaticImageUnderlay, imageResource3); configUI.SetPropertyControlValue(PropertyNames.Amount4, ControlInfoPropertyNames.DisplayName, "Doodle Color"); configUI.SetPropertyControlType(PropertyNames.Amount4, PropertyControlType.ColorWheel); configUI.SetPropertyControlValue(PropertyNames.Amount5, ControlInfoPropertyNames.DisplayName, "Paper Color"); configUI.SetPropertyControlType(PropertyNames.Amount5, PropertyControlType.ColorWheel); configUI.SetPropertyControlValue(PropertyNames.Amount6, ControlInfoPropertyNames.DisplayName, string.Empty); configUI.SetPropertyControlType(PropertyNames.Amount6, PropertyControlType.IncrementButton); configUI.SetPropertyControlValue(PropertyNames.Amount6, ControlInfoPropertyNames.ButtonText, "Clear"); configUI.SetPropertyControlValue(PropertyNames.Amount7, ControlInfoPropertyNames.DisplayName, string.Empty); configUI.SetPropertyControlValue(PropertyNames.Amount7, ControlInfoPropertyNames.Description, "Transparent Paper"); configUI.SetPropertyControlValue(PropertyNames.Amount8, ControlInfoPropertyNames.DisplayName, string.Empty); configUI.SetPropertyControlType(PropertyNames.Amount8, PropertyControlType.IncrementButton); configUI.SetPropertyControlValue(PropertyNames.Amount8, ControlInfoPropertyNames.ButtonText, "Undo - Erase Last"); configUI.SetPropertyControlValue(PropertyNames.Amount9, ControlInfoPropertyNames.DisplayName, string.Empty); configUI.SetPropertyControlValue(PropertyNames.Amount9, ControlInfoPropertyNames.Description, "Hide Cursor (Before pressing OK)"); return configUI; } private bool noskip = true; protected override void OnSetRenderInfo(PropertyBasedEffectConfigToken newToken, RenderArgs dstArgs, RenderArgs srcArgs) { this.Amount1 = newToken.GetProperty<DoubleProperty>(PropertyNames.Amount1).Value; this.Amount2 = newToken.GetProperty<Int32Property>(PropertyNames.Amount2).Value; this.Amount3 = newToken.GetProperty<DoubleVectorProperty>(PropertyNames.Amount3).Value; this.Amount4 = ColorBgra.FromOpaqueInt32(newToken.GetProperty<Int32Property>(PropertyNames.Amount4).Value); this.Amount5 = ColorBgra.FromOpaqueInt32(newToken.GetProperty<Int32Property>(PropertyNames.Amount5).Value); this.Amount6 = (byte)newToken.GetProperty<Int32Property>(PropertyNames.Amount6).Value; randomSeed = Amount6; this.Amount7 = newToken.GetProperty<BooleanProperty>(PropertyNames.Amount7).Value; this.Amount8 = (byte)newToken.GetProperty<Int32Property>(PropertyNames.Amount8).Value; randomSeed = Amount8; this.Amount9 = newToken.GetProperty<BooleanProperty>(PropertyNames.Amount9).Value; noskip = true; base.OnSetRenderInfo(newToken, dstArgs, srcArgs); } protected override void OnCustomizeConfigUIWindowProperties(PropertyCollection props) { // Change the effect's window title props[ControlInfoPropertyNames.WindowTitle].Value = "TR's DoodleMatic - v1.4"; base.OnCustomizeConfigUIWindowProperties(props); } protected override unsafe void OnRender(Rectangle[] rois, int startIndex, int length) { if (length == 0) return; RandomNumber = GetRandomNumberGenerator(rois, startIndex); for (int i = startIndex; i < startIndex + length; ++i) { Render(DstArgs.Surface, SrcArgs.Surface, rois); } } private Random GetRandomNumberGenerator(Rectangle[] rois, int startIndex) { Rectangle roi = rois[startIndex]; return new Random(instanceSeed ^ (randomSeed << 16) ^ (roi.X << 8) ^ roi.Y); } #region User Entered Code // Submenu: Artistic // Name: TR's DoodleMatic // Title: TR's DoodleMatic - v1.4 // Author: TechnoRobbo // URL: http://www.technorobbo.com #region UICode double Amount1 = 0.05; // [0,1] Small Detail/Small Pen ---------------------------Large Detail/Full Page int Amount2 = 0; // [0,10] Line Width Pair<double, double> Amount3 = Pair.Create(0.0, 0.0); // Doodle Pad (Hold CTRL to Doodle) ColorBgra Amount4 = ColorBgra.FromBgr(0, 0, 0); // Doodle Color ColorBgra Amount5 = ColorBgra.FromBgr(0, 0, 0); // Paper Color byte Amount6 = 0; // [255] Clear bool Amount7 = false; // [0,1] Transparent Paper byte Amount8 = 0; // [255] Undo - Erase Last bool Amount9 = false; // [0,1] Hide Cursor (Before pressing OK) #endregion byte CLS = 255; byte UndoButton = 0; byte UndoCount = 0; byte UndoBase = 0; bool UndoReady = false; bool drawn = false; bool holdimage = false; Bitmap hold = new Bitmap(35, 35); Rectangle orect = new Rectangle(); void YUV(ColorBgra z, ref int[] y) { int[] x = { z.R, z.G, z.B }; y[0] = ((66 * x[0] + 129 * x[1] + 25 * x[2] + 128) >> 8) + 16; y[1] = ((-38 * x[0] - 74 * x[1] + 112 * x[2] + 128) >> 8) + 128; y[2] = ((112 * x[0] - 94 * x[1] - 18 * x[2] + 128) >> 8) + 128; } void Render(Surface dst, Surface src, Rectangle rect) { if (noskip) { noskip = false; try { Bitmap bmp = new RenderArgs(dst).Bitmap; Graphics g = new RenderArgs(dst).Graphics; Graphics z = Graphics.FromImage(hold); g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; z.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; z.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; //erase cursor if (holdimage) { g.DrawImage(hold, orect, new Rectangle(0, 0, orect.Width, orect.Height), GraphicsUnit.Pixel); } holdimage = false; double detail = Amount1 * 126 + 1; double psize = Amount1 * .99 + 1; if (CLS != Amount6) { holdimage = false; CLS = Amount6; if (Amount7) { dst.Clear(ColorBgra.FromBgra(0, 0, 0, 0)); } else { dst.Clear(Amount5); } } Rectangle sel = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); int[] offx = { 0, -1, -1, -1, 0, 1, 1, 1 }; int[] offy = { -1, -1, 0, 1, 1, 1, 0, -1 }; bool init = true; System.Drawing.Point Start = new System.Drawing.Point((int)((1 + Amount3.First) / 2 * sel.Width), (int)((1 + Amount3.Second) / 2 * sel.Height)); int[] KeyColor = new int[3]; YUV(src.GetBilinearSampleClamped(Start.X, Start.Y), ref KeyColor); System.Drawing.Point NowXY = Start; int direction = 2; bool draw = Control.ModifierKeys == Keys.Control; //========UNDO=============================== string path = System.IO.Path.GetTempPath(); if (drawn != draw) {//check for draw start if (draw && !drawn) { UndoCount++; UndoCount &= 15; UndoBase++; if (UndoBase > 16) { UndoBase = 16; } Bitmap bmp1 = new RenderArgs(dst).Bitmap; bmp1.Save(path + @"TRDM" + UndoCount.ToString() + ".bmp"); bmp1.Dispose(); UndoReady = true; } drawn = draw; } //=========================// if (UndoButton != Amount8) { UndoButton = Amount8; if (UndoReady & (UndoBase > 0)) { UndoBase--; Bitmap bmp2 = new Bitmap(path + @"TRDM" + UndoCount.ToString() + ".bmp"); UndoCount--; UndoCount &= 15; Graphics g1 = new RenderArgs(dst).Graphics; g1.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; g1.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; g1.DrawImage(bmp2, 0, 0); g1.Dispose(); bmp2.Dispose(); } } //========UNDO=============================== Rectangle PenSize = sel; if (Amount1 != 1) { PenSize.Width = (int)((double)sel.Width * psize); PenSize.Height = (int)((double)sel.Height * psize); PenSize.X = Start.X - PenSize.Width / 2; PenSize.Y = Start.Y - PenSize.Height / 2; } int csize = Int32Util.Clamp(sel.Width / 80, 10, 30); Rectangle crect = new Rectangle(Start.X - csize / 2, Start.Y - csize / 2, csize, csize); if (draw) { if (holdimage) { g.DrawImage(hold, orect, new Rectangle(0, 0, orect.Width, orect.Height), GraphicsUnit.Pixel); } do { int[] CP = new int[3]; YUV(src.GetBilinearSampleClamped(Start.X, Start.Y), ref CP); double dist = Math.Sqrt((CP[0] - KeyColor[0]) * (CP[0] - KeyColor[0]) + (CP[1] - KeyColor[1]) * (CP[1] - KeyColor[1]) + (CP[2] - KeyColor[2]) * (CP[2] - KeyColor[2])); bool match1 = ((int)dist > detail); if (match1 | !sel.Contains(Start)) { init = false; Start.Y++; NowXY = Start; break; } Start.Y--; } while (init); int timeout = sel.Width * 2 + sel.Height * 2; do { for (int i = -2; i < 6; i++) { int adjust = (i + direction + 8) % 8; System.Drawing.Point pt = new System.Drawing.Point(offx[adjust] + NowXY.X, offy[adjust] + NowXY.Y); if (pt == Start) { NowXY = pt; break; } ColorBgra CP = src.GetBilinearSampleClamped(pt.X, pt.Y); int[] CO = new int[3]; YUV(CP, ref CO); double dist = Math.Sqrt((CO[0] - KeyColor[0]) * (CO[0] - KeyColor[0]) + (CO[1] - KeyColor[1]) * (CO[1] - KeyColor[1]) + (CO[2] - KeyColor[2]) * (CO[2] - KeyColor[2])); bool match = ((int)dist > detail); if (sel.Contains(pt) && match) { NowXY = pt; if (PenSize.Contains(NowXY)) { if (Amount2 != 0) { using (Pen BP = new Pen(Amount4, (float)Amount2)) { g.DrawEllipse(BP, NowXY.X, NowXY.Y, 1, 1); } } else { CP = Amount4; dst[NowXY.X, NowXY.Y] = CP; } } direction = adjust; break; } } timeout--; } while ((NowXY != Start) && (timeout > 0)); } //save new cursor eraser z.DrawImage(bmp, new Rectangle(0, 0, crect.Width + 2, crect.Height + 2), new Rectangle(crect.Left, crect.Top, crect.Width + 2, crect.Height + 2), GraphicsUnit.Pixel); holdimage = true; //store erase location orect = new Rectangle(crect.Left, crect.Top, crect.Width + 2, crect.Height + 2); //hide cursor or not================================================================= if (!Amount9) { Pen cPen = new Pen(Color.Blue, 2); g.DrawEllipse(cPen, new Rectangle(crect.Left + 2, crect.Top + 2, crect.Width - 2, crect.Height - 2)); cPen = new Pen(Color.Yellow, 2); g.DrawEllipse(cPen, new Rectangle(crect.Left + 1, crect.Top + 1, crect.Width - 1, crect.Height - 1)); cPen.Dispose(); } g.Dispose(); bmp.Dispose(); z.Dispose(); } catch (Exception e) { } } else { dst[0, 0] = dst[0, 0]; } } #endregion } } TRsDoodleMatic.zip
  18. TechnoRobbo's Croquis (Dwarf Horde Collaboration) ​Quick Sketch Filter 3.5 compatible v1.2 Slider and angle control by Red Ochre v1.3 RetainColor and Invert Controls by BoltBait v1.4 Pastel Effect by BoltBait Menu: Effects->Artistic CodeLab Source Code (it's a divide algorithm) Hidden Content: // Submenu: Artistic // Name: TRs Croquis // Title: TRs Croquis - v1.4 // Author: TechnoRobbo & Red Ochre & BoltBait // URL: http://www.technorobbo.com #region UICode int Amount1 = 210; // [0,225] Contrast int Amount2 = 0; // [0,255] Clip Lo int Amount3 = 222; // [129,255] Clip Hi double Amount4 = 0.5; // [0.1,10] Distance double Amount5 = 45; // [-180,180] Angle bool Amount6 = false; // [0,1] Retain Color bool Amount7 = false; // [0,1] Invert byte Amount8 = 0; // [1] Pastel Action|None|Invert|Rail #endregion private UnaryPixelOps.Invert invertOp = new UnaryPixelOps.Invert(); //private BinaryPixelOp multiplyOp = LayerBlendModeUtil.CreateCompositionOp(LayerBlendMode.Multiply); //for PDN 4 private UserBlendOp multiplyOp = new UserBlendOps.MultiplyBlendOp(); // Multiply for CodeLab 1.8 and Paint.NET 3.5x void Render(Surface dst, Surface src, Rectangle rect) { ColorBgra CP; Color rgb; double k; double l; float offX = (float)(Amount4 * Math.Cos(Amount5 * Math.PI / 180)); float offY = (float)(Amount4 * Math.Sin(Amount5 * Math.PI / 180)); for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; for (int x = rect.Left; x < rect.Right; x++) { CP = src.GetBilinearSampleWrapped((float)x + offX,(float)y + offY); rgb = CP.ToColor(); l = rgb.GetBrightness(); CP = src[x,y]; rgb = CP.ToColor(); k = rgb.GetBrightness(); k = (k==0)? 0: l/k; k *=k; k *=255; k = (k>255)?255:k; double inverse = 255 - Amount1; k -= Amount1; k = (k<0) ? 0:k; k= k * 255 / inverse; k =(k < Amount2) ? 0: (k > Amount3) ? 255:k; dst[x,y] = ColorBgra.FromBgra((byte)k , (byte)k ,(byte)k, CP.A); if (Amount7) { dst[x,y] = invertOp.Apply(dst[x,y]); } if (Amount6) { dst[x,y] = multiplyOp.Apply(dst[x,y],src[x,y]); } if (Amount8!=0) { ColorBgra CurrentPixel = dst[x,y]; PaintDotNet.HsvColor hsv = PaintDotNet.HsvColor.FromColor(CurrentPixel.ToColor()); int H = hsv.Hue; int S = hsv.Saturation; int V = hsv.Value; byte A = CurrentPixel.A; switch (Amount8) { case 1: V = 100-V; break; case 2: V = 100; break; } CurrentPixel = ColorBgra.FromColor(new PaintDotNet.HsvColor(H,S,V).ToColor()); CurrentPixel.A = A; dst[x,y] = CurrentPixel; } } } } TRsCroquis.zip
  19. This effect is a result of a writing by me CodeLab - First Steps (Linocut) tutorial. You can find it: Effects -> Artistic -> Linocut This effect is imitates the linocut technique. It has a simple and intuitive interface. A Tool Size control defines the width of the contours of the image. The Details control determines the amount of detail in the image. The Inverse checkbox to invert the colors of image. Compatible with both: v3.5.X and v4.0.X Linocut_en.zip Linocut_ru.zip Before: After: After when the checkbox Inverse is marked:
  20. Effects > Artistic > Stipple Changes in version 1:1: Added "Size variation" to vary dot size as well as spacing. Added "Squash" to allow dots in dark areas to overlap. Added "Distorted dots" for non-circular dots. Added "Transparent background". Replaces an image with a "dotted" version (circles with density depending on the image brightness). The parameters are as follows: Dot color - the color of the dots (unless Colored dots is selected). Background color - the color around the dots. Dot size - the diameter of the dots. Size variation - how small the dots get in the lightest parts of the image (0.0 means all dots have equal size). Spread - controls how far apart the dots get. Affects lighter colors the most; black pixels always causes dots to touch (or overlap if Squash is nonzero). Squash - controls how much dots overlap in the darkest areas. Bias - behave as though the image is darker (negative) or lighter (positive). Does not affect extreme colors (black and white). (This parameter is exactly the same as for the Dot plugin: http://forums.getpaint.net/index.php?/topic/25461-dot-plugin-17th-oct-2012). Lightness threshold - if this value is less than one, the brightest pixels are ignored (so white pixels become empty areas). See the bottom left image in the example above. Colored dots - if selected, the color is taken from the pixel in the middle of the dot. Distorted dots - makes dots non-circular. Transparent background - makes the background completely transparent (Background color is ignored). Reseed - reset the random number generator. Depending on the image, this may sometimes have no effect. Tips Be patient with large images! On my computer it takes 12 seconds to process a 3000x3000 image (but just a few seconds for 2000x2000). Consider reducing the image size first, since the results will probably be similar. The progress bar may not advance, but the effect is still working. This plugin works best with images that either have smooth gradients or high contrast. The bottom left image in the example above was sharpened a lot first (using Effects > Photo > Sharpen with the maximum sharpness three times in a row). The algorithm draws the dots from darkest to lightest, so thin black lines against a white background look much more distinct than white lines against a black background. Download: Stipple1.1.zip As usual, love to see any pics using this plugin!
  21. Reticulation is wrinkling, cracking the emulsion layer of film. Fatal defect, the result of violations of the treatment process. Sometimes the effect is achieved consciously and used as a means of expression in photography. This plug-in creates pseudo-reticulation effect. Updated to version 1.1 december 27 2014. Now you can find it in the Effects menu and Artistic submenu. Updated to version 1.2 december 30 2014. Updated to version 1.3 february 18 2015. Reticulation_en.zip Reticulation_ru.zip
  22. Technorobbo's Brush Strokes This plugin literally redraws your image in simulated brush strokes Menu: Effects->Artistic v.1.0.6 centers brush strokes around original pixels v1.0.5 adds a texture option Hidden Content: v1.0.1 adds Stroke Width Variance v1.0.2+ adds full 360° stroke direction v1.0.3+ fixes Plugin browser compatibility version 1.0.4+ Bristles and accelerated render Music by TechnoRobbo Source code for VS Programmers The Plugin TRsBrushStrokes.zip
  23. Useful for artistic effects on photos, unusual text effects, textures and even adding highlight stars to an image. It works out the direction of the 'tone gradient' then randomly draws tangents and radiuses.(radii?) Found under: Effects/Artistic/Cobweb Dll name = Cobweb. It is part of my v10 plugin pack here:Red ochre v10 plugin pack There are some 'mini tutorials' and examples below. Generally it is best applied to an image with smooth tone gradients. In other words try running a small Gaussian blur on the start image first. Interesting textures are possible, try using after 'clouds' or DavidF's 'cell texture' plugin. Weaknesses: Since the simple tone (B + G + R) for black is zero and the tone for a transparent colour is also zero ((eg. 255 + 255 + 255) * 0). You won't get much of a result from black text on a transparent layer. Try black text on a solid white layer and apply a blur first. Like 'FurBlur' it can be slow if 'Reps' and 'Length' are set too high. Have fun and please post any interesting results and tips back here!
  24. Effects > Artistic > Dot This plugin reduces an image to two colors, called "dark color" and "light color" in the GUI. The (greyscale) value of the original pixel determines the chance of being changed into each color. It is also possible to use only one of the colors and keep the rest of the pixels unchanged (see the rose on the right of the image below). Notes: High contrast images turn out best. Resolution makes a big difference; view results at 100%. Some examples: The inputs are: Dark color -- the color that dark pixels in the original image have a higher chance of being set to. Light colour -- the color that light pixels have a higher chance of being set to. Options -- "use both colors", "lighten only" or "darken only": whether to use or ignore the previous two colors. Bias -- increase or decrease each pixel's value (brightness) before randomly deciding whether to use the dark or light color. Jitter -- instead of using the current pixel, use a pixel up to this distance away. Feedback welcome! (If something like this exists already, it was still good practice for my first plugin). Download: Dot.zip