Jump to content

BoltBait

Administrator
  • Posts

    15,651
  • Joined

  • Last visited

  • Days Won

    390

Everything posted by BoltBait

  1. OK, so I wrote an Effect plugin to do this. Check it out: Feather Effect DLL
  2. Yes, Rick, Illnab1024 sent me the Gaussian Blur code (which he converted for use in Codelab). Then, I tried to understand it (big mistake--it would help if you'd used decent variable names). I figured it out well enough to modify it to my purpose. Then, I compiled the DLL using Codelab and posted it up. I hope someone finds it useful. I know I will
  3. Download v3.0 DLL here: BoltBait's Plugin Pack There have been many requests for a Feather feature (like this one, this one, and this one) so I decided to create it myself. Thanks goes out to Rick for writing the Gaussian Blur function and to Illnab1024 for sending it to me in Codelab format. If you don't know what feathering is, take a look at this picture: Basically, it softens the edges of objects that you are combining to make composit pictures. Please see this page for :arrow: instructions on how to use it. Enjoy. 8) ============================================= EDIT: I have recompiled this effect with the new CodeLab beta and added an icon to the effect and also added a UI that allows specifying the feather amount (from 1 to 5 with a default of 2). ============================================= EDIT: Updated again. Changed range from 1-5 to 1-10. Also, added the frequently requested freature of a true feather. The original method is called "grow" as it grows the object slightly. The new method is called "shrink" as it makes the edges of the object slightly transparent--the object shrinks slightly. I also moved the effect to the Blurs submenu. Here is the new UI: (4/15/07 update) ============================================= FIXED: Updated DLL to fix the UI bug where it gets confused if you move the sliders back and forth too much. (6/11/07 update) ============================================= FIXED: Fixed a typo. The last time I built this, I accidentally put "feather2" in the menu instead of "Feather". ============================================= NEW: I have rewritten this effect from scratch. The effect now shows up in the Effects > Object submenu. It now includes a third slider to control the strength of the effect. (1/27/2008 update) ============================================= NEW: I have rewritten this effect's UI from scratch. It now uses the IndirectUI of Paint.NET. (2/18/2008 Update) ============================================= FIXED: I have fixed the Paint.NET 3.36 bug. (8/26/2008 Update) ============================================= NEW: I have released version 3.0 Download the update here: BoltBait's Plugin Pack Source code published here: (4/4/2010 Update)
  4. Please just use the Pictorium thread (http://paintdotnet.12.forumer.com/viewtopic.php?t=1072) to show off your work. Welcome to the forums!
  5. There are several ways to rotate pictures in Paint.NET. Menu: Layers > Rotate / Zoom Image > Rotate Selections: Right-click drag on the nubs Key shortcuts: Ctrl-H Ctrl-G Is there some other way you want to be able to rotate? I'm not sure what you're asking here.
  6. Picc84, I would say that his post uses English about as well as yours. kdiz, here is a good place to start: http://paintdotnet.12.forumer.com/viewtopic.php?t=1824 Once you have installed the Spanish language files, try reading through the help file. You could also ask your questions in Spanish to the author of that thread.
  7. This forum is for posting tutorials only. Moving...
  8. I don't see where the Effects return information that would help you. For example, in the history window it simply says "New Image", "Paint Brush", "Gaussian Blur", etc. There is no indication what was drawn with the brush, or the level of the Gaussian blur--it could have been 2 or 45. The Effect DLL's would have to be rewritten to return important information to Paint.NET that they don't return today. For Gaussian blur it would be a single number, but for some other effects there are tons of settings that need to be returned. How do you standardize all that? I'll tell you... with XML. Wow, what a mess that would be.
  9. Leif, nice, but you seem rather preoccupied with the Simpsons... I won't be posting my latest graphic here. But, I'm sure if you thought about it for a moment, you could find it on your own.
  10. Picc84, have you tried Google? Google knows everything.
  11. I like the second one, but I don't think the yellow grid should be visible over her picture. EDIT: Hmmm... now you've changed the second one and made it worse. EDITEDIT: ok, now its back to the way it was. I still think the yellow grid needs to fade out before it gets to her picture or it neecs to be behind her.
  12. You can't change the selection with an effect plugin.
  13. Actually, it might be better if he just had the original picture (without text) on a base layer and did this: 1) Create a new layer on top of it. 2) Type the text in white on that layer. 3) Duplicated that layer 4) Turned the text on the new layer black 5) select the layer with white text 6) Gaussian Blur (30?) that layer so that the proper shape of the white cloud is achieved. 7) duplicate that layer several times until the proper shade of white is obtained.
  14. Try this: http://paintdotnet.12.forumer.com/viewtopic.php?t=2105
  15. Austin, I'm not really sure about your code, but if you want, here is my codelab script: void Render(Surface dst, Surface src, Rectangle rect) { // User Interface elements int GridSize = 10; bool AlphaOnly = false; bool ForegroundOnly = false; bool SwapColors = false; bool UseBrushWidth = false; int GridType = 0; // 0=grid, 1=checker // Other variables PdnRegion selectionRegion = EnvironmentParameters.GetSelection(src.Bounds); Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); ColorBgra CurrentPixel; ColorBgra PrimaryColor; ColorBgra SecondaryColor; bool Odd = false; // Get the current brush width for grids int w = (int)EnvironmentParameters.BrushWidth; if (!UseBrushWidth) w = 1; // Grab the primary and secondary colors (swapping if specified in the UI) if (SwapColors) { PrimaryColor = (ColorBgra)EnvironmentParameters.SecondaryColor; SecondaryColor = (ColorBgra)EnvironmentParameters.PrimaryColor; } else { PrimaryColor = (ColorBgra)EnvironmentParameters.PrimaryColor; SecondaryColor = (ColorBgra)EnvironmentParameters.SecondaryColor; } // Loop through all the pixels for(int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { // Only work with a pixel if it is selected // (this handles convex & concave selections) if (selectionRegion.IsVisible(x, y)) { // Get the source pixel CurrentPixel = src[x,y]; switch(GridType) { // We are making a grid case 0: Odd = false; for (int t=0; t<w; t++) { if ((((x-t) % GridSize) == 0) || (((y-t) % GridSize) == 0)) Odd = true; } if ( Odd ) { if (!AlphaOnly) { CurrentPixel.R = (byte)PrimaryColor.R; CurrentPixel.G = (byte)PrimaryColor.G; CurrentPixel.B = (byte)PrimaryColor.B; } CurrentPixel.A = (byte)PrimaryColor.A; } else { if (!ForegroundOnly) { if (!AlphaOnly) { CurrentPixel.R = (byte)SecondaryColor.R; CurrentPixel.G = (byte)SecondaryColor.G; CurrentPixel.B = (byte)SecondaryColor.B; } CurrentPixel.A = (byte)SecondaryColor.A; } } break; // We are making a checkerboard case 1: Odd = true; if ( ((x/GridSize) % 2) == 0) Odd = false; if ( ((y/GridSize) % 2) == 0) Odd = !Odd; if ( Odd ) { if (!AlphaOnly) { CurrentPixel.R = (byte)PrimaryColor.R; CurrentPixel.G = (byte)PrimaryColor.G; CurrentPixel.B = (byte)PrimaryColor.B; } CurrentPixel.A = (byte)PrimaryColor.A; } else { if (!ForegroundOnly) { if (!AlphaOnly) { CurrentPixel.R = (byte)SecondaryColor.R; CurrentPixel.G = (byte)SecondaryColor.G; CurrentPixel.B = (byte)SecondaryColor.B; } CurrentPixel.A = (byte)SecondaryColor.A; } } break; default: break; } // Save the (modified?) pixel dst[x,y] = CurrentPixel; } } } } The real key in making a checkerboard is in these two lines: Odd = true; if ( ((x/GridSize) % 2) == 0) Odd = false; if ( ((y/GridSize) % 2) == 0) Odd = !Odd; That is to say... every even horizontal square (x) is not colored, but swap that for every even row (y). That will determine if you need to use the primary or secondary color (black square vs. white square). **Where % is the remainder of the division function (mod). So, to simply the code down to just what you need, it would look like this: void Render(Surface dst, Surface src, Rectangle rect) { int GridSize = 32; PdnRegion selectionRegion = EnvironmentParameters.GetSelection(src.Bounds); for(int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { if (selectionRegion.IsVisible(x, y)) { bool Odd = true; if ( ((x/GridSize) % 2) == 0) Odd = false; if ( ((y/GridSize) % 2) == 0) Odd = !Odd; if ( Odd ) dst[x,y] = EnvironmentParameters.PrimaryColor; } } } }
  16. They already do. Look at the status bar once you select some pixels and click the Move selected Pixels tool. Right-click the nubs to rotate, etc.
  17. OK, got it. Changes include: * Support for grids OR checker boards * Support for brush width (or the default size of 1) I sent the code to Illnab1024 for an update.
  18. I set it at 1 and that's where its going to stay. Austin Spafford, I have made the code changes to support making checker boards. I will see if Illnab1024 has time to modify the UI and rebuild the DLL.
  19. Well, since you aren't giving me much to work with... Try playing with these tools: Original picture on background layer. Create a new layer and select it. Use paint brush tool to draw areas where you want hair. Use magic wand to select those areas. Effect > Add Noise (Play with this) Effects > Blur > Motion Blur 90 degrees with a distance of 5 (Play with this as well) Adjust the layer properties and adjust the Opacity of the 'beard' layer to fit your taste. OR If the person's hair is in the picture, you could use the Clone Stamp tool to copy hair from the top of their head to their face. Access your help file on how to use the clone stamp tool.
  20. Yeah, but it takes me about a month... Hey, I'm just kidding around. It really depends on your application. Could you post the picture (or a similar one) where you want to add hair?
  21. Here's one: http://paintdotnet.12.forumer.com/viewtopic.php?t=2318 Here's another: http://paintdotnet.12.forumer.com/viewtopic.php?t=2411
  22. Picc84, that's actually quite easy. Layer - Description 1 - Make an all black layer. 2 - Make a radial fade from yellow to black. 3 - Make a radial fade from white to white/transparent on top of the first fade. Merge Down layer 3 to layer 2. Use the true Circle Selection tool to select your sphere. Invert selection and press Delete. Merge Down the circle layer to the black background layer. Maybe do a Gaussian Blur (2) when you are totally finished?
×
×
  • Create New...