Search the Community

Showing results for tags 'distort'.



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 44 results

  1. ImageDistortion plugin can be found in Effects ► Distort. To run this plugin you need the OptionBasedLibrary v0.7.9 dll and dlc files. Please read the readme.txt file from the zip archive. Download: https://www.mediafire.com/file/j58ecxqiwxr7jhw/ImageDistortion.zip/file
  2. Droste This is a update of @PJayTycy's original Droste distortion plugin that was left abandoned in the plugin development section of the forum. See changelog below. Effects -> Distort -> Droste Before After Changelog v1.1 (May 8, 2019) Changed: Removed dependency on external library v1.0 by toe_head2001 (Aug 31, 2015) New: Added a control to adjust the angle of the effect. Changed: Reorganized the code to a CodeLab-like structure/style Changed: Changed plugin icon and shorted title to 'Droste' New: Added metadata for the Plugin Browser pre-v1.0 by @PJayTycy (Dec 5, 2007 - Jan 26, 2008) See thread Download Droste.zip Source Code Source files and Git history
  3. Tube Effect (or oblique cylinder?) What's this? Photo sample from: http://www.photo-libre.fr This is a distort effect plugin. It allows you to distort the image as if you put in on a cylinder... While moving, if the image leaves the area on a side it will reappear on the other. In fact it was originally 99% made with CodeLab...(1% for external text editor, and for the icon). Download the DLL Plugin TubeOblique.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface X,Y Offset (direction): ...you could choose the direction of the distortion. Steps factor: ...you could increase the effect of distortion. Quality: ...increasing the quality is slowering the rendering a bit, and should reduce the pixelisation. Options: _ Centered: if checked the borders are moving and the middle of the image is stable. _ Horizontal flip: if checked the upper part moves in opposite way than the lower part, like a S or Z. _ Vertical flip: if checked the right part moves in opposite way than the left part, like ~. Examples: Attention, need surounding but not everywhere! Let's test with this simple image. Let's say the blue rectangle is the subject. In this example the subject is in the middle of the area. The effect takes the full width of the selection and so the subject is moved down: For a better result (depending on what you are looking for!) you shoud cut/paste in a new image for the time to apply the effect. Take away left/right margin and leave up/low transparent (for a vertical effect). Then the effect is fully applied on the subject, most left and most right pixels don't move (or just 1-2 px). Advanced Example To make the 'glass' on the first picture: I've set the background color to transparent. I've resized the canvas only verticaly. I mean the picture was (for example) 160x120 I enlarge the canvas to 160x300. Be sure : - there is no transparent border on left/right to have a nice tube effect. - upper/lower borders are transparent... Then I've duplicated the image. And Applied Tube V:+0.60 steps 100 not centered, on the top layer And Applied Tube V:-0.60 steps 100 not centered, on the second layer And some other effects (shadow, glow, ..), I forgot to use the feather... Please test it and give your comments...
  4. Kaleidoscope Effect Plugin What's this? This is a plugin under Effect/Distort menu. Take a picture, and divide it as if you cut a pie in equal pieces. Each piece is numbered, starting at 0 with the rightmost piece and anti clockwise counting. The default is 6 pieces per image. It means "the pie" is divided in 6 pieces. This plugin will copy/rotate the piece nr 1 all over the other pieces replacing the original image, or will copy/rotate each piece mixing them all over the image. Download it! Plugin Kaleidoscope.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface .Quantity of pieces (1,100,dft=6): __You could increase/decrease the number of pieces around the image... .Piece selector (modulo) (0,100,dft=0): __Allows you to choose another piece as model to rotate... Modulo means (in 16 pieces, 0 to 15) if you choose 17 you'll have 2... .Radius %amount (0.01,400,dft=100): __The radius is based on the smallest side of the image, that represents 100%. You could increase/decrease this radius. .Zoom %amount (0.01,10000,dft=100): __You choose the zoom in or zoom out amount. .Choose reflective mode: __Normal: The piece is only rotated around the center. __Alerned (dft): One piece on two is mirrored to give more symetrical and continous aspect. The symetry is broken if the quantity of piece is odd. __Reversed: All the pieces are mirrored. .Cutting: __None (dft): The background outside the pieces doesn't change. __Background: The background outside the pieces is changed to transparent. __The selected piece: All is transparent except the selected piece. .Source angle: __Select the angle of the source image. More smooth than the piece selector. .Rotation angle: __Set the angle of the resulting image. .Copy over only one piece __Checked (dft): Copy/rotate the piece all over the other pieces replacing the original image. __Unchecked: Copy/rotate each piece mixing them all over the image. .Colored helper only __The plugin first creates a colored pie and each piece has a unique color. This is a 'temporary' result to simplify the picture copy/rotate/mirror. You could see this 'temporary' result if you check the box for that. .Draw lines width __Set the width more than 0 to draw the lines of each pièces. Let me know if you've got some trouble. or ideas of improvement. And post your art... Alterned reflection: Copy all over all: Cut all: Cut one: For your information, you could also find here: http://forums.getpaint.net/index.php?showtopic=4852 the kaleidoscope generator... to make this:
  5. Distort This! Effects -> Distort-> Distort This! This is an update/fork of TR's Distort This! plugin with some additional features, optimizations, and a ton of bug fixes. Change Log v2.9 (July 3, 2018) Added: Support for the Dark Theme v2.8 (Aug 4, 2017) Improved: Rendering speed is now faster, and uses less memory New: Supersample antialiasing (thanks MJW) Fixed: Clicking the 'OK' button too early no longer breaks rendering Fixed: Nubs can no longer go out of the UI bounds and become inaccessible New: There is now a visual indicator to show area outside of the 'Working Area' New: When setting the 'Working Area', the cursor is changed to a cross-hair New: The nubs can now be reset without also resetting the 'Work Area' Improved: Cleaned up the UI Fixed: Many small and subtle bugs Download DistortThis.zip Source Code https://github.com/toehead2001/pdn-tr-distort-this
  6. Seamless Texture Maker Effect Plugin What's this? Based on the original code from Boltbait for his Seamless Texture helper: This plugin is added to the menu Effects, submenu Distort. Download the DLL Plugin SeamlessTextureMaker.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface Choose the mode: ...Mirror on the axis (reduce): the image is duplicated and flipped. ...Copy and rotate (reduce): the image is duplicated and rotated. ...Normal+Cut: The image is duplicate and panelled half size and then blended with the original. ...Cut: The image is panelled half size. The center is going to the corners. Choose the axis of symetry: ...You could decide to apply the effect on the proposed axis. Flip the selection: ...With the mirror this option allows you to place the reduced image in a different order. ...With other modes, the duplicated image is flipped before the blending. Transparent pixel is: ...transparent ...replaced by Black color ...replaced by White color ...replaced by Primary color ...replaced by Secondary color ...as original image If there are some transparent pixel, you could choose to replace them... Include transparent pixels ...The blend mode selected applies also to the alpha channel. The Examples: Image: Mode Mirror Mode Lighten Mode Average Mode Darken
  7. Polar + Rectangular transformations Plugin What's this? This is a plugin under Effect/Distort menu. It should replace Polar to Rect and Rect to Polar, as I'm merging the two in one. Giving tribute to the original authors, @Illnab1024 for Polar to Rect Conversion Plugin, @Programmerman for Rectangular to Polar Conversion plug-in. As they both provide the sources, it was not so hard to merge them. And also I'm answering a request... Download the DLL Plugin Polar.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface Choose the effect: click on the desired radio button to choose the effect you want to apply. X,Y Offset of the center: work fairly well for polar to rect, but could give strange result for rect to polar (not really a bug!). Angle: change the angle. Scale: used to enlarge/reduce the result. Quality: increasing the quality is slowering the rendering! :S Some examples: Model: A picture from last holidays Polar to rect: Rect to polar:
  8. Hello this is my first plug-in. This plug-in simply subtracts the red blue green by x+y or x-y or x*y depending on the option you select and then divides it by the amount you specified. It creates a strange tiled gradient. Colour Distort.zip
  9. Melting distortion What's this? This effect is was a bonus in the bottom list of my pack of plugins without its post till now. This effect is a long lasting idea since I've created the gravity (effect...), still popping from time to time till I find a new approach. This effect takes the top of the selection and distort it like a melting candle. Download it! Plugin Melting.dll Here is the DLL http://jcljay.free.fr/pdn/Melting.zip The MadJik's All plugins package is available! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface This plugin is added to the menu Effects, submenu Distort. Range In purcent of the height the length of the melting portion. % Sample length In purcent of the height the length of image used for the melting portion. Softness Lower value for extrem peaks higher values for smooth curves. Distortion / Number of phases Horizontal range/number of distortion/phases (phases are for the sinus curve method). Reseed Zero is for full random effect. 1 and more is the Start value of the random generator. It means you will always have the same result for the same value. Shadow -None -Black -White -White+Black -Black+White Add a vertical gradient at the limit of the range. Shadow length Set the length of the shadow. Both sides If checked apply a distortor below the range limit. Method -Sinus curve -Full random Select the calculation method of the distortion. The Examples: This texture used with Shape3D and some more work: Voilà! Enjoy! Let me see what you could do with it!
  10. Magnifier Effect Plugin What's this? This plugin is added to the menu Effects, submenu Distort. It is a evolution of the Ed Harvey's Lens. I had a discussion with him about it to have his agreement to publish my version. The improvements are : - offset: to move the center. - independant slider for vertical/horizontal radius. - range from -200 up to 400. - anti aliasing Download it! Plugin Magnifier.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface ...Choose the amount (negative values will flip the image). ...Choose the radius for X & Y. ...Move the center using the offset. ...Select the quality. The antialiasing is working on the selection area. To avoid to blur the whole picture first create a selection... Some examples: Model / Result New option: Delete background:
  11. Thanks to the new Codelab plugin, the Beta version of PowerStretch 2.0 is available. Now BoltBait will get his kids smiling in few seconds. The previous version of PowerStretch is still available (see below). Download >> Power Stretch 1.0 -Improved performance (good even with large photos) -Improved rendering quality -Random pixels bug fixed (perhaps not completely, but they are now very unlikely to appear) Have fun. Pyjo. Let's see some example of this distort plugin. With PowerStretch you can make an egg without being a hen (Shape3D+PowerStretch) And you can shape Eve's body without being God: (Gradients+PowerStretch). These two were 100%PdN examples. You can also use PowerStretch for photo editing. For example you can change a cat or a sparrow into something other: (PowerStretch only). (Magic Wand, Basic Antialias, PowerStretch). PowerStretch is also very funny, since it makes Mona Lisa smile even more than usual: (PowerStretch only) And now the bad news. PowerStretch isn't an easy-to-use effect. Here you can see how to use its controls: Due to limitations of Codelab user interface, you cannot choose where to apply distorsion: the stretched area is always set in the center of the picture. You therefore often have to move the objects to be stretched. The pictures I posted contain some suggestions for using this plugin. Please post comments and possibily some picture obtained with the plugin with other use suggestions. Bye Pyjo.
  12. Motion Sharpen Distort Effect Plugin What's this? This is a plugin under Effect/Distort menu. You know the motion blur effect, you should also know the Sharpen effect. I've tryed here to create a Motion Sharpen effect. Instead blurring while moving, it will sharpen the image... It's not perfect, but you could use it with text and title to give some relief... Download it! Plugin MotionSharpen.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface Angle: ...Set the motion direction. Centered: ...The motion is balanced forward/backward (or only forward if unchecked). Blend Mode: ...Normal: the effect is like the motion blur. ...Darken: the motion is applied and use the darkest pixels to trace on. ...Lighten: same but with lightest pixels. ...Sharpen: same but using an average calculation on the pixels. Some examples:
  13. Donut distortion Effect Plugin What's this? It would be more handy if I can find some good math skills to help me with sinus & co. formulas. Don't hesitate to PM if you like to solve my problem! I'm not really happy with this distortion effect as I've not find the correct formula to apply what I had in mind. But for now it gives some good results enough to be published. How does it works? The initial idea was to distort the image by a rotation between 2 circles and so create something like a Donut aspect. This is to illustrate the idea: The red Arc should be the distortion of the green segment. The result for now is just a distortion between 2 circles... and I named it the Donut effect! Before: After: I've found 4 modes of distortions: This is a test of the modes on lightrays: Download the DLL Plugin Donut.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface This plugin is added to the menu Effects, submenu Distort. External radius (0,1000, dft 300) Set the size of the donut by choosing its radius. Internal radius (0,1000, dft 100) Set the size of the hole of the donut. Unit (checkbox, dft unchecked) unchecked: External and internal raduis values are in pixels checked: The values are in 1/1000 based on the smallest size of the selection. - ex: for a 800x600 image, 1000 represents the full raduis of 600 = 300px This is usefull to redo the effect over the image with a small selection here and there: Distortion angle (-360,+360, dft 10) This value is issued to set the "strength" of the distortion. Quality Increasing the quality is slowering the rendering a bit, and should reduce the pixelisation. Effect Mix This is a slider to mix the final image with the orignal image to make the effect more or less subtile. Mode Choose the distortion mode (Soft, medium, hard, distroy). New (yma: 170716) - Erase background - Offset vector Some examples:
  14. This is a beta version of a perspective transformation plugin. Unfortunately, I can't seem to post images using my flickr account (I get the message, "You are not allowed to use that image extension on this community.") The plugin uses four double-vector controls to place the transformation control points. Due to CodeLab restrictions, the double vectors are all initially at the center of the window, and have to be moved to reasonable positions to produce a picture. It's not too hard to do, but it's very inelegant. Eventually, I'll convert it a Visual Studio project and fix that problem. There are also scale and offset controls to adjust the image size and position. If the scales and offsets are in their default positions, the image is perspectively mapped into the quadrilateral formed by the control points, surrounded by transparency. The image isn't clipped to the quadrilateral, it's just that there's nothing to display. If the scaling factor is greater than 1, the image will extend beyond the control-point quadrilateral. If the control points are moved to invalid positions, such as a non-convex quadrilateral, the entire image will be transparent. The effect is in the Effects>Distort menu. EDIT: New version uploaded 2/8/2015. There are three changes. First, I replaced the X and Y Scale controls with Scale and XY Proportion controls. Second, I added optional anti-aliasing using supersampling. Third, I used floats instead of doubles for almost all the calculations. The source code is also updated. One thing that might be noticed is that if the checkerboard or grid is displayed with the control points in the corners, so the image is undistorted, then the image will appear to be a bit darker when anti-aliasing is enabled. This is an (as far as I know) unavoidable consequence of using supersampling and bilinear interpolation. If you zoom in on the image, you'll see what amounts to a one-pixel blur, so the black-white edge is now dark gray where it was black, and light gray where it was white. If the image is moved or rescaled a bit, all the edges will be shades of gray, and the darkening effect will more or less disappear, as it will for other images that don't have a bunch of black-to-white transitions. So while I wouldn't call it a feature, it's not much of a bug, either. EDIT: Fixed spelling error in plugin name. A checkerboard pattern and a grid pattern to demonstrate anti-aliasing is here: The plugin is here (beta 1.1): PerspectiveTransformation1_1.zip (the old version) This is version Beta 1.2: PerspectiveTransformation1_2.zip (the current version) Here is the source code for the older version: EDIT: Beta version 1.2. Changes include: Control points start in the corners instead of the center of the screen. The corner points can be moved outside the window boundary (the current limit is -1.5 to 1.5). The corner controls, and the other double controls, are 3 decimal places instead of two, for more precise control. The XY Proportion control works differently, increasing one dimension while simultaneous decreasing the other. I thought it would be simpler to use if it only changed one dimension at a time, but found it to be difficult and confusing.. A Help menu is added. Some minor cosmetic changes, such as renaming the "Anti-Alias" control "Antialias." This is a VS project instead of CodeLab. I didn't include the source code, but if anyone wants it I'll post it. I will post the code when I release the non-beta version. I didn't remove either the CodeLab source or the old CodeLab DLL. There are a few enhancements I hope to add to the eventual non-beta plugin, but this version is, I think, a substantial improvement from the previous version. Please let me know what features you'd like to see (though you may not see them). Also, let me know if there are any spelling errors, grammar errors, or improvements I could make to the Help menu. I could gray-out the Antialias Quality when Antialiasing is disabled, but I thought it might be useful to be able to adjust it before enabling it. Opinions about this are welcome.
  15. From a newbie, this is a port of some HLSL FX code that I wrote for a Kaleidoscope Effect for Windows Movie Maker 6.0; I just wanted to see how the Paint.Net coding tool Code Lab works and to get some experience with Paint.net and the C# language. It is a similar, but a bit different than the Kaleidoscope Effect that Madjik submitted around 2008. This one adds a center point selector and a source angle rotater. The pie shaped selection is just the image swept out by rotating clockwise 360/n degrees. It is missing Madjik's copy all over all option, show single piece etc. Also the edge of the image can be clamped or repeated. Anyway, just for fun. Here is the DLL DPL KAL.zip (Edit: Upload by EER 16 April 2017) Unzip and place the DLL in the .../Paint.Net/Effects folder. Then DPL Kaleidoscope will show up in the Effect->Distort menu Here is a sample with a elliptical selection followed by a rectangular selection. Also of course the whole canvas can be selected (by selecting nothing). The UI is: The controls are: The Selection Rectangle = Drawing Destination (Lasso, Ellipse and Inverted Selections gives some interesting results) (Source Center) Selector - x y position of the center to be processed (Source Angle) Chooser - Rotate the start of the pie to be copied (Destination Angle) Chooser - Rotate the resulting kaleidoscope image (Zoom) Slider - Zoom in/out on the kaleidoscope image (Repetitions) Slider - Number of copies (Imaging Type) Radio Buttons Reflect, Left, Right (Clamp Edge / Repeat) At Edge Check Box - (Ellipse / Rectangle) Check Box - clip at a rectangle or ellipse representing the selection area (Border Width) Slider (0 for none) - (Colored Background) Checkbox - Surround the selection with a single color (Background Color) Color Wheel - Choose border color and surrounding color when colored background is on. (Distort) CheckBox - Gives a bit of a spherical look. Originally a bug, now featured . Edit: Per Rick suggestion, changed the Image Type radio buttons to a dropdown list. UI is now 780 pixels tall. Also, a later post has a 750 pixel version with the Distort checkbox removed. Comments welcome, pleabo
  16. Water Reflection Effect Plugin What's this? This plugin is added to the menu Effects, submenu Distort. Based on Tom Jackson's Reflection water code lab... Download it! Plugin WaterReflection.dll Here is the DLL The MadJik's All plugins package is available ! http://forums.getpaint.net/index.php?showtopic=7186 How to install Close Paint.net Classic version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: C:/Program Files/Paint.NET/Effects Microsoft Store version of Paint.net Unzip and (re)place the DLL in your Effect folder usually: /My Documents/paint.net App Files/Effects/ You have to adapt for your language My Documents The User interface The settings in the dialog box: Distance: Where does the water reflection start in % of the height of the image. Values 0 to 400, default is 50 (middle of the image). Waves period: This is the wave frequency (not the height but the width amplitude). Values 0.01 to 100, default is 10. Duration: The wave is fading slowly while it comes to the bottom of the image. You could change the speed of fading with this slider. Values 0.01 to 200, default is 100. Blur: As gaussian blur but done within the same effect. Values 0 to 10 (very slow!!!), default is 0. Start Angle: You could move the angle to change a bit the aspect of the wave... Wind: Add some smooth distort effect. Values -100 to 100, default is 0. Distort: Add some strong distort effect. Values -100 to 100, default is 0. Transparent water: Progressive transparency Distort full height: The effect applies also on the upper part of the image. Use transparency as shore: This check box allows you to define the line the water should follow. You create a transparent cut in the image (top=image, bottom=transparent). The water effect will follow the curve of the cut. A smooth curve gives a better result...
  17. Dissolve 'Tis my first plugin! What Does It Do: It does exactly what the name implys, it dissolves one image onto another. What Does It Look Like: Screenshots: Image A --> Image B --> Final Image --> (Default settings used.) Download the DLL >> Dissolve.zip Source code (for programmers >> DissolveSRC.zip Updates: 10/1/09 - Plugin updated. Picture now changes when file path is changed. 8/29/09 - Screenshots added. 8/29/09 - Code updated with code from Simon Brown. 8/28/09 - Plugin posted.
  18. Name: Aardvark Description: Tiles an image with choices for reflected and brick tiling, rotation and perspective distortions Keywords: Tiling|Tiles|Texture|Tessellation|perspective|tilt|rotation|zoom Menu: Distort Original release date: 10th July 2016 Authors: Red ochre (John Robbins) and M.J.W. .dll name: Aardvark Compatibility: tested on Pdn 3.5.11 and Pdn 4.0.10 Aardvark.zip Firstly let me thank M.J.W. for his help and patience. He is solely responsible for getting the 'tilt' to work correctly and helped enormously with the 'super-sampling' and general speed of the effect. Please do give him a rep' point! The controls are quite self-explanatory but it is worth noting: 1. It is mainly designed for zooming out, (to see the tiling) but it can zoom in, by unchecking the 'limit to integer' check box and setting the zoom below 1.00. 2. The tilted surface rotation slider is greyed out if there is no tilt. 3. The Max samples slider affects the quality. The default of 11 allows high quality maximum zooming out when not tilted. If using tilt, I suggest first lowering the sampling to quickly get the image as desired, then increase to maximum for best results. 4. Many of the example images were created by using Aardvark a number of times, on different settings. Do experiment! 5. Why is it called Aardvark?...why not! Please post any images you make using it here. I've included some example images below but I always enjoy seeing what others create.
  19. Here is the plugin you've been waiting for!!! Just kidding. This is a plugin I developed for a specific purpose, that I decided to release in case anyone has a use for it. As the Help menu says: Offset Alternating Stripes offsets alternating stripes of pixels selected distances. Stripe Width is the width of the stripes in pixels. Odd Offset is the number of pixels to offset the first stripe and all other odd numbered stripes. Even Offset is the number of pixels to offset the second stripe and all other even numbered stripes. Stripe Phase moves the point at which the first stripe begins. Stripe Angle rotates the direction of the stripes. Edge Behavior specifies how to handle points that are shifted beyond the edge of the image. The options are None, Wrap, or Clamp. Quality specifies the amount of antialiasing to use. A value of one disables antialiasing. Higher values increase the number of samples per pixel. Generally, no antialiasing is needed when the Width and Offsets are integer values. Here is the user interface: Here is an example of the plugin applied to an image: Here is the CodeLab source: Hidden Content: // Name: Offset Alternating Stripes // Submenu: Distort // Author: MJW // Title: Offset Alternating Stripes // Version: 1.0.* // Desc: Offsets alternating stripes of a selected width by specified amounts // Keywords: offset alternating stripes // URL: // Help: #region UICode DoubleSliderControl Amount1 = 20; // [1,1000] Stripe Width DoubleSliderControl Amount2 = 0; // [-1000,1000] Odd Stripe Offset DoubleSliderControl Amount3 = 20; // [-1000,1000] Even Stripe Offset DoubleSliderControl Amount4 = 0.0; // [-0.5,0.5] Stripe Phase AngleControl Amount5 = 0; // [-180,180] Stripe Angle RadioButtonControl Amount6 = 0; // [1] Edge Behavior|None|Wrap|Clamp IntSliderControl Amount7 = 1; // [1,5] Quality #endregion Surface Src; int edgeBehavior; float Syx, Syy, Syw; float evenX, evenY, oddX, oddY; void Render(Surface dst, Surface src, Rectangle rect) { Src = src; bool antialias = (Amount7 != 1); if (antialias) SetupForSubpixels(Amount7, Amount7); edgeBehavior = Amount6; float width = (float)Amount1; double ang = (Math.PI / 180.0) * Amount5; float Mxx = (float)Math.Cos(ang); float Myx = (float)Math.Sin(ang); float Mxy = -Myx; float Myy = Mxx; // Set up the offset distances. I tend to think of the initial line is even, // but then I can't really call it the first line. oddX = Mxx * (float)Amount2; oddY = Mxy * (float)Amount2; evenX = Mxx * (float)Amount3; evenY = Mxy * (float)Amount3; // Calculate the values used to calculate the stripe number. Only the low bit of the // result matters. It's used to determine if it's and odd or even stripe. float widthRecip = 1.0f / width; Syx = widthRecip * Myx; Syy = widthRecip * Myy; // Calculate the offset. Include the phase. Add a large number to always make // the result positive. Use an odd number so the first line is odd. Add half the // width-scaling value for rounding. Syw = (float)Amount4 + 40001.0f + 0.5f * widthRecip; for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; float fy = (float)y; for (int x = rect.Left; x < rect.Right; x++) { float fx = (float)x; if (!antialias) dst[x, y] = GetTransformedPixel(fx, fy); else dst[x, y] = GetTransformedPixelAA(fx, fy); } } } ColorBgra GetTransformedPixel(float fx, float fy) { // Get the rotated, scaled, and offset Y distance as an integer stripe number. int dy = (int)(Syx * fx + Syy * fy + Syw); if ((dy & 1) == 0) { fx -= evenX; fy -= evenY; } else { fx -= oddX; fy -= oddY; } if (edgeBehavior == 0) return Src.GetBilinearSample(fx, fy); else if (edgeBehavior == 1) return Src.GetBilinearSampleWrapped(fx, fy); else return Src.GetBilinearSampleClamped(fx, fy); } ColorBgra GetTransformedPixelAA(float fx, float fy) { int b = 0, g = 0, r = 0, a = 0; fy += ssYStart; float bx = fx + ssXStart; for (int iy = 0; iy < ssYSamples; iy++) { fx = bx; for (int ix = 0; ix < ssXSamples; ix++) { ColorBgra pixel = GetTransformedPixel(fx, fy); int alpha = pixel.A; if (alpha != 0) { b += alpha * pixel.B; g += alpha * pixel.G; r += alpha * pixel.R; a += alpha; } fx += ssXStep; } fy += ssYStep; } if (a == 0) { return ColorBgra.Transparent; } else { // Compute the (rounded) averages. int twiceA = a << 1; b = ((b << 1) + a) / twiceA; g = ((g << 1) + a) / twiceA; r = ((r << 1) + a) / twiceA; a = (twiceA + ssSamples) / ssTwiceSamples; return ColorBgra.FromBgra((byte)b, (byte)g, (byte)r, (byte)a); } } int ssXSamples, ssYSamples, ssSamples, ssTwiceSamples; float ssXStart, ssYStart, ssXStep, ssYStep; void SetupForSubpixels(int xSamples, int ySamples) { ssXSamples = xSamples; ssYSamples = ySamples; ssSamples = xSamples * ySamples; ssTwiceSamples = ssSamples << 1; ssXStep = 1.0f / (float)xSamples; ssYStep = 1.0f / (float)ySamples; ssXStart = -0.5f * (1.0f - ssXStep); ssYStart = -0.5f * (1.0f - ssYStep); } Here is the plugin: OffsetAlternatingStripes.zip Maximilian has a 3.5.11 build. EDIT: Fixed double-stripe-for-negative-angles bug, and a multi-thread bug caused be forgetting to delete a line of code.
  20. TechnoRobbo's Reverse Fisheye v1.0 Removes or reduces the fisheye distortion to produce a panoramic image. This plugin was developed while assisting another user. It got some reps and downloads so I decided to publish it. There were 2 algorithms I developed - Linear and Circular. Which one you use is up to you. Image Attributions: Jimee at en.wikipedia Cezary Piwowarski National Aeronautics and Space Administration The Codelab Source Code (for programmers) Hidden Content: // Submenu: Distort // Name: TR's ReverseFishEye // Title: TR's ReverseFishEye - v1.0 // Author: TechnoRobbo // URL: http://www.technorobbo.com #region UICode byte Amount1 = 0; // [1] Reverse Type|Linear|Circular #endregion void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); double CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; double CenterY= ((selection.Bottom - selection.Top) / 2)+selection.Top; double offx ,offy ,u, v; ColorBgra CurrentPixel; if (Amount1==1){ for (float y = rect.Top; y < rect.Bottom; y++) { for (float x = rect.Left; x < rect.Right; x++) { //find direction and distance u = (x - CenterX ) / CenterX ; v = (y - CenterY ) / CenterY ; double wide = Math.Sqrt(1 - v * v); wide = wide * u * CenterX ; offx =wide + CenterX; offy =y; CurrentPixel = src.GetBilinearSample((float)offx,(float)offy); dst[(int)x,(int)y]=CurrentPixel; } } }else{ for (float y = rect.Top; y < rect.Bottom; y++) { for (float x = rect.Left; x < rect.Right; x+=.5f) { //find direction and distance double maxradx = x-CenterX ; double maxrady = y-CenterY; double howfar = Math.Sqrt(maxradx * maxradx + maxrady * maxrady); double dirz = Math.Atan2(maxrady,maxradx); double mymax = maxradx * Math.Tan(dirz); double maxfar = Math.Sqrt(CenterX * CenterX + mymax * mymax); double normal = howfar/maxfar; offx = (float)(CenterX + Math.Cos(dirz) * CenterX * normal); offy = (float)(CenterY + Math.Sin(dirz) * CenterY * normal); CurrentPixel = src.GetBilinearSample((float)offx,(float)offy); dst[(int)x,(int)y]=CurrentPixel; } } } } The Plugin ReverseFisheye.zip PDN 3.5 version ReverseFisheye35.zip
  21. TechnoRobbo's & Ego Eram Reputo's Drum Skin A Plugin that Re-Maps Rectangular Images into Circular Images. Originally designed for Bass Drum Skin Text http://forums.getpaint.net/index.php?/topic/28071-how-to-make-text-into-a-circle/?p=406359 v1.4 - PDN 3.5 Compatible Menu: Effects->Distort V1.1 Video The Code: Hidden Content: // Submenu: Distort // Name: TR's & EER's Drum Skin // Title: TR's & EER's Drum Skin - v1.3 // Author: TechnoRobbo & Ego Eram Reputo // URL: http://www.technorobbo.com #region UICode double Amount1 = 0.5; // [0,1] Intensity double Amount2 = 1; // [0,1] Magnify X double Amount3 = 1; // [0,1] Magnify Y int Amount4 = 50; // [25,75] Width int Amount5 = 50; // [25,75] Height #endregion void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); float CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; float CenterY= ((selection.Bottom - selection.Top) / 2)+selection.Top; float offx=0,offy=0; ColorBgra CurrentPixel; for (float y = rect.Top; y < rect.Bottom; y++) { for (float x = rect.Left; x < rect.Right; x++) { float nx = (x - CenterX); float ny = (y - CenterY); nx /= CenterX * (float)Amount4/50; ny /= CenterY * (float) Amount5/50; offx = nx / (float)Math.Sqrt(1 - Amount1 * (ny * ny))* CenterX * (float)Amount2 + CenterX; offy = ny / (float)Math.Sqrt(1 - Amount1 * (nx * nx))* CenterY * (float)Amount3 + CenterY; CurrentPixel = src.GetBilinearSample((float)offx,(float)offy); dst[(int)x,(int)y]=CurrentPixel; } } } TRsDrumSkin.zip
  22. Name: ClipDisplace Description: Uses the clipboard image tone to distort the current layer. Menu: Effects/Distort Release date: 13th October 2015 Author: Red ochre .dll names: ClipDisplaceAA (This version only works on Pdn4.0.8+)- previously called just "ClipDisplace" ClipDisplace3_5_11 (works on Pdn 3.5.11 and probably Pdn4 too, but does not use the clipboard opacity) Please choose the relevant .dll ClipDisplaceAA.zip Updated version with smoothing thanks to "MJW" ClipDisplace3_5_11.zip Note: Both versions available via my plugin pack here:Red ochre v10 plugin pack This is not a new idea, it has similarities to the "Displacement and Alpha mask" http://forums.getpaint.net/index.php?showtopic=9869and others. It relies on the codelab code for reading the clipboard (Thanks BoltBait!) and in the Pdn4+ version there are options to use the clipboard opacity for masking purposes. How to use: 1. Select and Copy something (this places that image on the 'clipboard'). If nothing useable is on the clipboard it will use the current selected layer. http://i.imgur.com/UrkcGLP.png 2. Move to the layer with the thing you want to distort eg. text or an object (flag in this case) and play with the controls. http://i.imgur.com/XkHt9f5.png Feel free to use these images to practice with: -------------------------------------------------------------------------------------------------------- Here is a very brief tutorial showing how I made the clipboard distortion-map image. Please do experiment and post images in this thread! http://i.imgur.com/VBf2pNt.png http://i.imgur.com/T7HO3vZ.png http://i.imgur.com/QdoCJag.png http://i.imgur.com/BTbRxr6.png http://i.imgur.com/YXZJwS2.png or http://i.imgur.com/Va5CZ1q.png Here are some things made using it. http://i.imgur.com/Ruk6aNj.png http://i.imgur.com/W3OZO7j.png http://i.imgur.com/CIQZdUP.png http://i.imgur.com/Q55mgdy.png http://i.imgur.com/1EKgQLf.png http://i.imgur.com/j4ctIGi.png ---------------------------------------------------------------------------------------------------------------------------------------------- Here are some more instructions on how I got the text mask image... hope it helps. 1. http://i.imgur.com/oSd7CI8.png 2. Create a new layer and write some text or use an object or shape. http://i.imgur.com/NugREDy.png 3. Add some shading to the text, either use my 'Object Edge' plugin http://i.imgur.com/nXcHDdZ.png ... or use TR's Contour Filler. http://i.imgur.com/FqrwOlA.png 4.Now Copy the whole text layer. Turn off the text layer's visibility and make sure you are on the bottom (coloured) layer. Run the Clip Displace plugin. http://i.imgur.com/oRrhP6A.png http://i.imgur.com/SdyJG45.png http://i.imgur.com/Ab1StIY.png
  23. TechnoRobbo's FreeWarp v1.9.2 TR’s FreeWarp (short for TechnoRobbo’s Freestyle Warp) was designed for the artist to intuitively reshape an image by stretching it’s detail. The math employed was a built from the ground up as deliberate departure from Beier-Neely’s Algorithm and the standard mesh warp, Allowing the stretching to be arbitrary. Version 1.92 adds AutoSave and more internal stuff. Version 1.91 adds an Opacity adjustment and some internal stuff Version 1.9 adds a Warp Curvature adjustment and preview Version 1.8 Fixes Undo Version 1.7.1 Cursor Scaling Fix. Version 1.7 warping within selections. Version 1.6 adds functionality and speed Version 1.5 Re-invents the user interface Version 1.2 Puts back missing Label Version 1.1 Fine Location Control Added FreeWarp Tutorial Tutorial Music by TechnoRobbo Menu: Effects->Distort Left-Click Key to Warp - Save to Keep Warp Old Version 1.5 http://youtu.be/8ZiKjh9dRsI Version 1.1 Video How it Works The Algorithm has 2 distinct parts: 1. Distort the Image 2. Localize Warping ..and 3 distinct parameters. 1. The Origin – where the warp begins 2. The Target – where the warp ends 3. The Minimum Warp Size – the size of the warped area (If you continue to stretch the image beyond this size the algorithm adjusts this parameter) Distort the Image Stretching the image is achieved by dividing the image into parts. The Stretched Side and the Compressed Side. The demarcation point is the Target point. Anything on the Origin side of the Target it stretched from the image border – anything on the opposite side is compressed towards the image border. In the Source Code this is labeled “//reverse mapping”. Localizing the Warp Localizing control of the warp is a simple matter of finding the distance of a pixel to the imaginary line segment created by the Origin Point and the Target Point. In the Source Code this is the “distance” function. The distance is normalized by diving it with the Minimum Warp Size. If the distance between Origin and Target (Pythagorean Theorem) exceeds the Minimum Warp Size the distance is used. Normalizing results (d) is a value between 0 and 1 that is used as the control in a linear interpolation between the Source pixel (uu,vv) and the Target Pixel (x,y). uu = d * x + uu - uu * d; vv = d * y + vv - vv * d; I hope I shed some light on the code for the programmers – I’m sorry if I bored the rest. The Source Code The Plugin TRsFreeWarp.zip
  24. Screen Pixel This is an update to @Bleek II's ScreenPixel plugin. See changelog below. Effects -> Distort -> Screen Pixel Features Takes a image and breaks it into RGB components. Control the opacity of the RGB Automatically apply correct (3x) pixelation cell size. (e.g. if your RBG size is 2, a pixelation amount of 6 will be applied) Changelog v1.1 by toe_head2001 (Feb 24, 2015) New: added the ability to reduce the opacity from 255; defaults at 100. New: Pixelation is now built in, and can be toggled. Pixelation size automatically increases with RBG size. New: Metadata was added for the 'Plugin Browser' v1.0 by Bleek II (March 28, 2008) Initial release Download ScreenPixel.zip Source Code https://github.com/toehead2001/pdn-screen-pixel
  25. For info see this post: Tom Jackson's Excellent Fire Tutorial Simon Brown has created a similar plugin here. Mine is different. For my plugin, the user (that's you) will need to draw a black to white gradient in the general shape you want the flames before running the effect. Download here: http://forums.getpaint.net/index.php?/topic/8318- How to install plugins: http://boltbait.googlepages.com/install If that doesn't work, post your troubles here: This plugin shows up under the Effects > Distort menu as "Burninate". I believe Trogdor would approve. Source code here: using System; using System.Text; using System.Reflection; 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("BurninatePlugin")] [assembly: AssemblyDescription("Burninate Plugin for Paint.NET. Based on Tom Jackson's excellent Fire Tutorial.")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("BoltBait")] [assembly: AssemblyProduct("BurninatePlugin")] [assembly: AssemblyCopyright("Copyright © BoltBait")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] [assembly: AssemblyVersion("1.0.*")] namespace BurninateEffect { public class PluginSupportInfo : IPluginSupportInfo { public string Author { get { return "BoltBait"; } } 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.BoltBait.com/pdn"); } } } [PluginSupportInfo(typeof(PluginSupportInfo), DisplayName = "Burninate")] public class BurninateEffectPlugin : PropertyBasedEffect { public static string StaticName { get { return "Burninate"; } } public static Image StaticIcon { get { return new Bitmap(typeof(BurninateEffectPlugin), "burninate.png"); } } public BurninateEffectPlugin() : base(StaticName, StaticIcon, SubmenuNames.Distort, EffectFlags.Configurable) { } public enum PropertyNames { Amount1, Amount2, Amount3, Amount4 } protected override PropertyCollection OnCreatePropertyCollection() { List<Property> props = new List<Property>(); props.Add(new Int32Property(PropertyNames.Amount1, 100, 2, 1000)); props.Add(new DoubleProperty(PropertyNames.Amount2, 0.5, 0, 1)); props.Add(new BooleanProperty(PropertyNames.Amount4, false)); props.Add(new Int32Property(PropertyNames.Amount3, 0, 0, 255)); return new PropertyCollection(props); } protected override ControlInfo OnCreateConfigUI(PropertyCollection props) { ControlInfo configUI = CreateDefaultConfigUI(props); configUI.SetPropertyControlValue(PropertyNames.Amount1, ControlInfoPropertyNames.DisplayName, "Scale"); configUI.SetPropertyControlValue(PropertyNames.Amount2, ControlInfoPropertyNames.DisplayName, "Roughness"); configUI.SetPropertyControlValue(PropertyNames.Amount2, ControlInfoPropertyNames.SliderLargeChange, 0.25); configUI.SetPropertyControlValue(PropertyNames.Amount2, ControlInfoPropertyNames.SliderSmallChange, 0.05); configUI.SetPropertyControlValue(PropertyNames.Amount2, ControlInfoPropertyNames.UpDownIncrement, 0.01); configUI.SetPropertyControlValue(PropertyNames.Amount4, ControlInfoPropertyNames.DisplayName, string.Empty); configUI.SetPropertyControlValue(PropertyNames.Amount4, ControlInfoPropertyNames.Description, "Black and White"); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.DisplayName, string.Empty); configUI.SetPropertyControlType(PropertyNames.Amount3, PropertyControlType.IncrementButton); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.ButtonText, "Randomize"); configUI.SetPropertyControlValue(PropertyNames.Amount3, ControlInfoPropertyNames.Description, "HINT: Start by drawing a gradient from black to white before running this effect. Try different gradient shapes to vary the flames."); return configUI; } protected override void OnSetRenderInfo(PropertyBasedEffectConfigToken newToken, RenderArgs dstArgs, RenderArgs srcArgs) { this.Amount1 = newToken.GetProperty<Int32Property>(PropertyNames.Amount1).Value; this.Amount2 = newToken.GetProperty<DoubleProperty>(PropertyNames.Amount2).Value; this.Amount3 = newToken.GetProperty<Int32Property>(PropertyNames.Amount3).Value; this.Amount4 = newToken.GetProperty<BooleanProperty>(PropertyNames.Amount4).Value; // setup for calling the clouds effect cloudsProps = cloudsEffect.CreatePropertyCollection(); PropertyBasedEffectConfigToken CloudsParameters = new PropertyBasedEffectConfigToken(cloudsProps); CloudsParameters.SetPropertyValue(CloudsEffect.PropertyNames.Scale, Amount1); CloudsParameters.SetPropertyValue(CloudsEffect.PropertyNames.Power, Amount2); CloudsParameters.SetPropertyValue(CloudsEffect.PropertyNames.BlendOp, normalOp); CloudsParameters.SetPropertyValue(CloudsEffect.PropertyNames.Seed, Amount3); cloudsEffect.SetRenderInfo(CloudsParameters, dstArgs, srcArgs); base.OnSetRenderInfo(newToken, dstArgs, srcArgs); } protected override unsafe void OnRender(Rectangle[] rois, int startIndex, int length) { if (length == 0) return; for (int i = startIndex; i < startIndex + length; ++i) { Render(DstArgs.Surface, SrcArgs.Surface, rois[i]); } } protected override void OnCustomizeConfigUIWindowProperties(PropertyCollection props) { // Change the effect's window title props[ControlInfoPropertyNames.WindowTitle].Value = "BoltBait's Fire Effect v1.0"; base.OnCustomizeConfigUIWindowProperties(props); } int Amount1 = 100; // [2,1000] Scale double Amount2 = 0.5; // [0,1] Roughness int Amount3 = 0; // [255] Reseed bool Amount4 = false; // Black and White // Setup for calling the Render Clouds effect private CloudsEffect cloudsEffect = new CloudsEffect(); private PropertyCollection cloudsProps; // Setup for using Desaturate pixel op private UnaryPixelOps.Desaturate desaturateOp = new UnaryPixelOps.Desaturate(); // Setup for using various blend ops private UserBlendOps.OverlayBlendOp overlayOp = new UserBlendOps.OverlayBlendOp(); private UserBlendOp normalOp = new UserBlendOps.NormalBlendOp(); // Blend Mode unsafe void Render(Surface dst, Surface src, Rectangle rect) { // Call the Render Clouds function cloudsEffect.Render(new Rectangle[1] { rect }, 0, 1); // Now in the main render loop, the dst canvas has a render of clouds for (int y = rect.Top; y < rect.Bottom; y++) { ColorBgra* srcPtr = src.GetPointAddressUnchecked(rect.Left, y); ColorBgra* dstPtr = dst.GetPointAddressUnchecked(rect.Left, y); for (int x = rect.Left; x < rect.Right; x++) { ColorBgra CurrentPixel = *srcPtr; // Make the source layer black and white CurrentPixel = desaturateOp.Apply(CurrentPixel); // Mix it with the clouds layer to create flames CurrentPixel = overlayOp.Apply(CurrentPixel, *dstPtr); // Now, make the curves adjustment to give the flames color if (!Amount4) { CurrentPixel.G = Utility.ClampToByte((CurrentPixel.G - 140) * 2.2173); CurrentPixel.B = Utility.ClampToByte((CurrentPixel.G - 204) * 5); } *dstPtr = CurrentPixel; srcPtr++; dstPtr++; } } } } } Note: This is NOT a CodeLab script. VS 2005+ is required to compile. Enjoy.