Jump to content

MJW

Members
  • Posts

    2,853
  • Joined

  • Last visited

  • Days Won

    70

Everything posted by MJW

  1. I'm not sure I know what I'm talking about, but I think you might want to use the PDN method BufferUtil.Copy(): public unsafe static void Copy(void* dst, void* src, int byteCount) I'm pretty sure the surface memory is already locked down. I believe the memory for PDN Surfaces is always pinned, or whatever it's called.
  2. Furthermore, plugins are not allowed to modify Paint.NET's user interface, so no such plugin could be published on this site.
  3. You might try BoltBait's Transparency adjustment after resizing. Set the Transparency slider all the to the maximum value of 100, but leave Ignore opaque pixels checked. All the partially transparent pixels will be made fully opaque. It's in the Adjustment menu, not the Effects. For more control (along with greater complexity) you can try Red ochre's Alpha threshold, which is in the the Transparency submenu. Setting the lo slider control one less than the hi control will select the cutoff point for making a pixel opaque.
  4. Congratulations to @Pixey, @lynxster4, and @Manc for some outstanding entries. Pixey's Magnum bar is particularly impressive. The coloration of the wooden stick is splendid. Thanks to to @toe_head2001 and @Ego Eram Reputo for choosing another excellent theme.
  5. If gradients are allowed, I suggest that perhaps two fixed colors separated by a horizontal boundary also be allowed. The lower color could represent a surface upon which the ice cube rests, and the upper color, a background. It could used to help emphasize the ice cube's refractive aspect. Perhaps even two gradients separated by a horizontal boundary, if we want to get really fancy.
  6. Fixed color, gradient, or any old thing? I assume fixed color, but thought I'd ask.
  7. I wish there were, and have proposed the idea at least twice.
  8. The following idea may help. Make a duplicate layer of the image. Adjust the duplicate layer to conform to your idea of increased exposure. (Using Brightness and Contrast, BoltBait's Combined Adjustments, Michael Vinther's Laplacian Pyramid Filter, etc.) Make the adjusted layer the lower layer. Select the Eraser Tool. Set the Brush Width to something fairly large, and set a low Hardness. Set the Opacity of the Primary Color below 255. The lower the Opacity, the less effect the Eraser will have. I suggest starting with something around 20. Now erase the areas in the top (unadjusted) layer that you want to look more exposed. The more you erase, the more the adjusted layer will show through. When done, flatten the image.
  9. Have you run the Task Manager to check on memory and CPU usage? Often when I get a Not Responding error, it's not due to the program for which the error is displayed, but some other program that's hogging memory or the CPU. A common example of such a program is Firefox, which seems to eventually take over all the free memory available.
  10. You could try two of pyrochild's plugins: Grid Warp and Liquify. Both allow the image in the clipboard to be used as the background, so you can copy the model's arm to the clipboard for the background. If you use Grid Warp, it might help to rotate the image so that the arm is horizontal and the bracelet vertical, then rotate back the combined image. If you use Liquify, you'll probably want to try a large-sized brush. Another plugin that might be worth trying is Paste Warp+. It would almost certainly be advisable to first rotate the image to make the arm horizontal.
  11. I'll give it some consideration. I know straight Euclidean distance isn't a particularly good method for color comparison. I'd probably have to disable taking opacity into account when using the more complex color metric. I doubt the method I use can be extended to it.
  12. I think Edge Shader may be useful for this. Basically, draw the pipe on a transparent background, then apply Edge Shader, adjusting the Maximum Distance and Gradient Profile for the best look. You will have to clip off the ends of the pipe, to remove the section that's shaded from the ends.
  13. Paste From Clipboard may be useful. If before copying it to the clipboard, you center a selection around the thing you want to scale, you can somewhat control the center for scaling. It has a XY Proportion control that can modify the aspect ratio. Neither is exactly what you're asking for, but perhaps they'll give you what you need.
  14. The Texture Merger is probably the plugin I'm most proud of, even though I sometimes wonder if I'm the only one who ever uses it. It's designed to combine height maps. It's quite a complex (and, I admit, more that a little confusing) plugin. Using it to rotate the height map created by Texture Object Rounder isn't too difficult, though. - Copy the height map to the clipboard (Ctrl-C). - Run Texture Merger. - About halfway down the (very large) menu, there's a drop-down list labeled Height Merge Method. Select the last option, Clipboard (No Displacement). - You may also want to enable Antialiasing. - Now you can rotate (and also scale and translate) the height map using the clipboard controls at the top of the menu.
  15. If I start with a 512x512 white canvas, then rotate it 90 degrees with Rotate/Zoom, the top pixel row is transparent. By marking the edge pixels, I confirmed that the rotated image is translated down one pixel, so the previous left column is lost. My guess is that the rotation is about the wrong center. (I say "sometimes" only because I haven't checked every situation.)
  16. I believe I've confirmed that the problem is that Rotate/Zoom isn't doing an exact 90 degree rotation. There are other ways to rotate the height map using the rather complex Texture Merger, but I'll try to come up with an easy way soon. I think Rotate/Zoom has another problem, which I'll report as a bug if I confirm it. If I start with a square window with a constant color background, then rotate by ninty degrees, the top line of pixels is transparent, which I believe indicates the rotated image was translated one pixel down.
  17. I compared the colors in the places with the problem. In every case I looked at, one or two of the RGB color components in the bad colors are one less than the values of the good colors. Examples in hex: GOOD BAD 21 A0 AC 21 9F AC 22 C6 E0 22 C5 DF 23 DC 79 23 DB 79 22 6D 66 22 6C 66 22 0B 6D 21 0B 6D It's not a one-bit difference, but a numeric difference, as A0 to 9F shows. Is there any chance you rotated the layer by, say, 90.01 degrees instead of 90 degrees? That would be an unusual thing to do, but I think it could produce similar artifacts (because the heights would be mis-interpolated). EDIT: I would hate to think so, but perhaps it's a problem with Rotate/Zoom not precisely exchanging the X and Y coordinates for a 90 degree rotation. If you check the shading before and after the 90 degree rotation, you can see if that's the problem. (I've rotated Object Rounded objects by 90 degrees and never seen that sort of thing, but it could depend on the exact image.)
  18. Would you please describe the exact steps between running the Texture Object Rounder, and the shading? I would expect that there are not too many. Also, perhaps you can try running (then cancelling or undoing) the Texture Shader after each step, to see when the lines first appear. I've never seen anything like those three lines, and I can't think of any reason for them.
  19. Try doing it again. I've never seen anything like that, and think those anomalies must have somehow been introduced some time after the Texture Object Rounder was used (though I have no theory about how). BTW: Though Pixey has the height set in the Texture Shader at about 304, the "technically" correct height for shading objects produced by the Texture Object Rounder with default height scaling is 255. However, sometimes it looks better to have it a higher or lower, depending on the texture on the clipboard. Make sure to enable Antialiasing in the Texture Shader. It will almost always produce a better looking result.
  20. Thanks. I'll hold off releasing any plugin that uses it before the update.
  21. I'm not sure what that means in regard to a plugin that's trying to determine if it can use the data on the clipboard (which is the only thing I would care about). Also, Bitmap seems to be the only one that makes sense for images, so if it doesn't work, what would?
  22. Here are the routines I wrote based on Rick's code. It appears to work for text (I haven't tested it yet for images). It seems to be ClipboardNativeFormats rather than ClipboardNativeDateFormats. I assume Bitmap is the correct format to test for images. public bool ClipboardContainsFormat(uint format) { bool clipboardContainsFormat; IClipboardService clipboard = this.Services.GetService<IClipboardService>(); using (IClipboardTransaction clipTx = clipboard.Open()) { clipboardContainsFormat = clipTx.IsNativeDataPresent(format); } return clipboardContainsFormat; } public bool ClipboardContainsImage() { return ClipboardContainsFormat(ClipboardNativeFormats.Bitmap); } public bool ClipboardContainsText() { return ClipboardContainsFormat(ClipboardNativeFormats.Text); }
  23. I wish there were on that was exactly what you need.
  24. You could try Grid Warp, Gravity, or Paste Warp+. The second two will leave the vertical lines vertical, which may not be what you want. If you use Grid Warp, place the image to be transformed on a large canvas, surrounded by transparency (perhaps about 2000 wide). Use a 2x3 grid size, and pull down the center nodes, above and below the image to be transformed. When you do that, you'll see the reason for the wide canvas. The part of the distortion you want will be in the center. Move the edge nodes to adjust the distortion.
  25. That's strange, because as far as I can tell, Clipboard.ContainsImage seems to work correctly. I used it in a plugin to disable some controls when there was no image on the clipboard. I believe I tested it fairly well, and it always seemed to correctly identify when there was and wasn't an image on the clipboard. (Though perhaps I didn't test it as thoroughly as I should have, because at that time I had no reason to doubt that a few successful tries with different types of clipboard data was all I'd need.)
×
×
  • Create New...