Jump to content

BoltBait

Administrator
  • Posts

    15,730
  • Joined

  • Last visited

  • Days Won

    405

Everything posted by BoltBait

  1. Verified. Rounded Rectangle looks good at all corner sizes I checked.
  2. Don't we all... EDIT: By the way, you can read Rick's message here:
  3. Rick is aware of the problem you're having and he will release a new version VERY soon... (tonight or possibly tomorrow). This effects all single processor systems.
  4. Looks like you have Mirillis Action! installed. Turn that off and try running paint.net again. Also, upgrade paint.net to version 4.0.11.
  5. Not really. If you look at the color docker in small mode, none of the controls have value boxes or labels now. The color docker window in small mode uses the HSV color mode. The color docker allows you to choose the H and S of a color but not V or A. I think it would be really handy to be able to select ALL colors with the color docker in small mode.
  6. CananaMan, I like your idea. EER, when in expanded mode, the color docker window could look the same as it does now.
  7. I'm not seeing that behavior at all. And, I don't see that behavior listed on the help page EER posted. Perhaps, this is something you've requested before but has never been implemented? That tab doesn't show up if there are no plugin load errors.
  8. What do you expect Ctrl-PgUp and Ctrl-PgDn to do? In Paint.NET 3.5.11 they don't do anything at all. In paint.net 4.0.11 they respond the same as PgUp and PgDn. Maybe you're looking for Ctrl-Home and Ctrl-End?
  9. You'll have to excuse Xod as English is not his first language. I think Eli has explained the gist of the issue. It looks to me as though you are using 2 different paths, one for the fill and one for the outline. You should be able to use the same path to draw both if you draw the fill first and then the outline.
  10. There are a couple of ways to do what you want: 1) make sure each layer does not have overlapping pixels. This way, the layer will only affect the background layer. 2) after working on a layer, flatten your image down to a single layer before starting the next layer. (Not really recommended as you lose the ability to edit each individual layer later.) There is no automatic setting to do what you're describing.
  11. In your example, you'd need to do those separately. If you make a selection, hold down the Ctrl key and make another selection. The two selections are combined into a single selection.
  12. Eli, what browser are you using? Can you clear your cache and try again?
  13. OK, don't tell Rick that I did this, but here is a plugin that is NOT well behaved that does what you want. I'll leave it to you to build using CodeLab. // Name: Output Selection Coordinates // Author: BoltBait // Version: 2.0 #region UICode #endregion string LatestFileName() { string filename = Form.ActiveForm.Owner.Text; filename = filename.Substring(0, filename.IndexOf(" - ")); if (filename != "Untitled") { for (int i=7; i>=0; i--) { string regpath = @"HKEY_CURRENT_USER\Software\Paint.NET"; string regkey = "File/MostRecent/Path" + i.ToString(); string regval = (string)Registry.GetValue(regpath,regkey,"Untitled"); if (filename == Path.GetFileName(regval)) { return regval; } } } return filename; } void GetFileName() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Select Image File"; ofd.Filter = "Image Files(*.PNG;*.BMP;*.JPG;*.GIF)|*.PNG;*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"; ofd.DefaultExt = ".png"; ofd.Multiselect = false; if (ofd.ShowDialog() == DialogResult.OK) { imgPath = ofd.FileName; OutputFilename = Path.ChangeExtension(imgPath, ".txt"); } else { OutputFilename = ""; } } string OutputFilename = ""; string imgPath = null; void Render(Surface dst, Surface src, Rectangle rect) { if (OutputFilename == "Cancelled") return; if (OutputFilename == "") { OutputFilename = LatestFileName(); if (OutputFilename == "Untitled" || OutputFilename == "") { Form IndirectUIForm = Form.ActiveForm; if (IndirectUIForm != null) { IndirectUIForm.Invoke(new Action(delegate () { GetFileName(); })); } } else { OutputFilename = Path.ChangeExtension(OutputFilename, ".txt"); } } if (OutputFilename == "") { OutputFilename = "Cancelled"; return; } if (!Path.IsPathRooted(OutputFilename)) { string dir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); OutputFilename = Path.Combine(dir, Path.GetFileName(OutputFilename)); } Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); int CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; int CenterY = ((selection.Bottom - selection.Top) / 2)+selection.Top; string OutputData = selection.Left.ToString() + "," + selection.Top.ToString() + " " + selection.Right.ToString() + "," + selection.Bottom.ToString(); ColorBgra CurrentPixel; for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; for (int x = rect.Left; x < rect.Right; x++) { CurrentPixel = src[x,y]; if (x == CenterX && y == CenterY) { if (OutputFilename != "") { if (!File.Exists(OutputFilename)) { using (StreamWriter sw = File.CreateText(OutputFilename)) { sw.WriteLine(OutputData); } } else { using (StreamWriter sw = File.AppendText(OutputFilename)) { sw.WriteLine(OutputData); } } Form IndirectUIForm = Form.ActiveForm; if (IndirectUIForm != null) { IndirectUIForm.Invoke(new Action(delegate () { MessageBox.Show("Data saved to file:\r\n" + OutputFilename + "\r\n\r\nData: " + OutputData); })); } } } dst[x,y] = CurrentPixel; } } } And, you fellow Effect authors, avert your eyes! Do not follow down the path of the unrighteous! I'm serious! Rick will probably ban me for posting such unclean code. Press your browser's back button now before you become corrupted! MJW, don't you dare use this!
  14. Nope. Trust me, this is the most efficient I can get it... given the limitations of the effects system.
  15. I don't really feel like writing a tutorial on this one. You better just bookmark it. The script actually has issues. For example, I can't get it to append text to the existing file. My intent was to make a selection, run the effect. Make another selection, run the effect again with the result being 2 lines in the output file. It doesn't work... and I'm too lazy to debug it.
  16. Rick is aware of this issue and is working on a fix for the next release.
  17. They are still getting through, but the volume does seem to be less.
  18. OK, here is a more complicated script that should do what you want. // Name: Output Selection Coordinates // Author: BoltBait // Version: 1.1 #region UICode byte Amount1 = 0; // [255] Select Current Image File #endregion string OutputFilename = ""; int PreviousBrowseButton = -1; string imgPath = null; void GetFileName() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Select Image File"; ofd.Filter = "Image Files(*.PNG;*.BMP;*.JPG;*.GIF)|*.PNG;*.BMP;*.JPG;*.GIF|All files (*.*)|*.*"; ofd.DefaultExt = ".png"; ofd.Multiselect = false; if (ofd.ShowDialog() == DialogResult.OK) { imgPath = ofd.FileName; OutputFilename = Path.ChangeExtension(imgPath, ".txt"); } else { OutputFilename = ""; } } void Render(Surface dst, Surface src, Rectangle rect) { if (PreviousBrowseButton == -1) { PreviousBrowseButton = Amount1; } if (PreviousBrowseButton != Amount1) { PreviousBrowseButton = Amount1; Form IndirectUIForm = Form.ActiveForm; if (IndirectUIForm != null) { IndirectUIForm.Invoke(new Action(delegate () { GetFileName(); })); } } Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); int CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; int CenterY = ((selection.Bottom - selection.Top) / 2)+selection.Top; ColorBgra CurrentPixel; for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; for (int x = rect.Left; x < rect.Right; x++) { CurrentPixel = src[x,y]; if (x == CenterX && y == CenterY) { if (OutputFilename != "") { if (!File.Exists(OutputFilename)) { using (StreamWriter sw = File.CreateText(OutputFilename)) { sw.WriteLine(selection.Left.ToString() + "," + selection.Top.ToString() + " " + selection.Right.ToString() + "," + selection.Bottom.ToString()); } } else { using (StreamWriter sw = File.AppendText(OutputFilename)) { sw.WriteLine(selection.Left.ToString() + "," + selection.Top.ToString() + " " + selection.Right.ToString() + "," + selection.Bottom.ToString()); } } } } dst[x,y] = CurrentPixel; } } } How to use Download the following zip file (I used CodeLab to compile it for you): WriteSelectionCoordinatesToFile.zip Unzip it to your desktop. Run the enclosed Install_.bat file to install the effect into your paint.net Open an image in paint.net and make a selection. Run the effect. Click the button to select your image file and click OK. (This is necessary because effects do not know the name of the open file.) Click OK on the effect dialog box to finalize your effect and write the coordinates to the file. Hope this helps!
  19. It wouldn't be too hard of an effect to write. What format would you like to save the coordinates in? (IOW, what would you like the text file to look like?) EDIT: It has been a few minutes and you haven't responded to my question. So, I wrote a generic CodeLab script that does what you want: // Name: Output Selection Coordinates // Author: BoltBait // Version: 1.0 #region UICode #endregion string OutputFilename = @"C:\Users\YourName\Desktop\output.txt"; void Render(Surface dst, Surface src, Rectangle rect) { Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); int CenterX = ((selection.Right - selection.Left) / 2)+selection.Left; int CenterY = ((selection.Bottom - selection.Top) / 2)+selection.Top; ColorBgra CurrentPixel; for (int y = rect.Top; y < rect.Bottom; y++) { if (IsCancelRequested) return; for (int x = rect.Left; x < rect.Right; x++) { CurrentPixel = src[x,y]; if (x == CenterX && y == CenterY) { if (!File.Exists(OutputFilename)) { using (StreamWriter sw = File.CreateText(OutputFilename)) { sw.WriteLine(selection.Left.ToString() + "," + selection.Top.ToString() + " " + selection.Right.ToString() + "," + selection.Bottom.ToString()); } } else { using (StreamWriter sw = File.AppendText(OutputFilename)) { sw.WriteLine(selection.Left.ToString() + "," + selection.Top.ToString() + " " + selection.Right.ToString() + "," + selection.Bottom.ToString()); } } } dst[x,y] = CurrentPixel; } } }
  20. MJW's quote of the forum rules is exactly on point. This is a family-friendly forum. iiFurryMinded, I'll be watching you...
  21. When using the clone tool, look on the toolbar for the "Hardness" setting. 100% is hard edges, 0% is very soft edges.
  22. The next version will have the zoom feature you desire too. Just be patient.
×
×
  • Create New...