Jump to content

xod

Members
  • Posts

    632
  • Joined

  • Last visited

  • Days Won

    20

Posts posted by xod

  1. Well, you can increase the clarity by clicking on the small gear on the left of the YouTube logo where it is displayed HD in red. You can choose Quality 1080.

  2. Some specifications:
    If you have pdn installed on a different partition than C, you will need to edit the .reg file using Notepad and change the path. Then save and run the .reg file.
    Then, in the context menu, the icon will be displayed correctly.
    After testing in Win 10, it does not seem to work. The system still requires to indicate with which program we will open a png or jpeg file.

     

    Td5J2vC.png

  3. This little plugin is based on the Rainbow Torus posted by klaxxon in the Creations thread.

     

    Spoiler
    
    // Name: Circular shapes
    // Submenu: Render
    // Author: xod
    // Title: Circular shapes
    // Version: 1.0
    // Desc: Render some circular shapes
    // Keywords: Circular shapes
    // URL: https://forums.getpaint.net
    // Help:
    #region UICode
    
    DoubleSliderControl Amount1 = 0.56; // [0.1,1] RING:   Size, Color, Thickness
    ColorWheelControl Amount2 = ColorBgra.FromBgr(0,255,255); // [Yellow] {Amount5} 
    DoubleSliderControl Amount3 = 0.36; // [0,1] 
    CheckboxControl Amount4 = false; // [0,1] Thickness x 2
    CheckboxControl Amount5 = true; // [0,1] Show the ring
    IntSliderControl Amount6 = 1; // [1,300] PEN:   Size, Color, StartCap, EndCap
    ColorWheelControl Amount7 = ColorBgra.FromBgr(0,0,255); // [Red] 
    ListBoxControl Amount8 = 0; // {Amount10} |Flat|Round|Triangle|RoundAnchor|ArrowAnchor|SquareAnchor|DiamondAnchor
    ListBoxControl Amount9 = 0; // {Amount10} |Flat|Round|Triangle|RoundAnchor|ArrowAnchor|SquareAnchor|DiamondAnchor
    ListBoxControl Amount10 = 0; // SHAPES|Arc|Ellipse|Rectangle
    IntSliderControl Amount11 = 12; // [1,100] Number of shapes
    CheckboxControl Amount12 = false; // [0,1] {Amount10} Flip arcs
    #endregion
    
    void Render(Surface dst, Surface src, Rectangle rect)
    {
        Rectangle selection = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
    
        float centerX = ((selection.Right - selection.Left) / 2f + selection.Left);
        float centerY = ((selection.Bottom - selection.Top) / 2f + selection.Top);
        float diam = (float)Amount1 * Math.Min(selection.Width, selection.Height);
        int thick = (int)(diam * Amount3);
        if (Amount4)
        {
            thick = (int)(Amount1 * 1199 * Amount3);
        }
        float radius = diam * 0.5f;
        float width = diam - thick * 0.5f;
        float height = diam;
        float pointX = centerX - radius;
        float pointY = centerY - radius;
    
        float coordX = centerX - radius - centerX + thick * 0.25f;
        float coordY = centerY - radius - centerY - thick * 0.5f;
    
        dst.CopySurface(src, rect.Location, rect);
        using (RenderArgs ra = new RenderArgs(dst))
        {
            Graphics g = ra.Graphics;
            g.SmoothingMode = SmoothingMode.AntiAlias;
            g.Clip = new Region(rect);
    
            using (Pen gPen = new Pen(Amount2, thick))
            {
    
                gPen.DashStyle = DashStyle.Solid;
                {
                    if(Amount5) g.DrawEllipse(gPen, pointX, pointY, diam, diam);
                    gPen.Width = Amount6;
                    gPen.Color = Amount7;
                    switch(Amount8)
                    {
                        case 0:
                            gPen.StartCap = LineCap.Flat;
                            break;
                        case 1:
                            gPen.StartCap = LineCap.Round;
                            break;
                        case 2:
                            gPen.StartCap = LineCap.Triangle;
                            break;
                        case 3:
                            gPen.StartCap = LineCap.RoundAnchor;
                            break;
                        case 4:
                            gPen.StartCap = LineCap.ArrowAnchor;
                            break;
                        case 5:
                            gPen.StartCap = LineCap.SquareAnchor;
                            break;
                        case 6:
                            gPen.StartCap = LineCap.DiamondAnchor;
                            break;
                    }
                    switch(Amount9)
                    {
                        case 0:
                            gPen.EndCap = LineCap.Flat;
                            break;
                        case 1:
                            gPen.EndCap = LineCap.Round;
                            break;
                        case 2:
                            gPen.EndCap = LineCap.Triangle;
                            break;
                        case 3:
                            gPen.EndCap = LineCap.RoundAnchor;
                            break;
                        case 4:
                            gPen.EndCap = LineCap.ArrowAnchor;
                            break;
                        case 5:
                            gPen.EndCap = LineCap.SquareAnchor;
                            break;
                        case 6:
                            gPen.EndCap = LineCap.DiamondAnchor;
                            break;
                    }
    
                    //point of rotation = center of canvas (selection)
                    g.TranslateTransform(centerX, centerY);
                    RectangleF r1 = new RectangleF(coordX, coordY, width, height);
                    for (int NumberOfShapes = 0; NumberOfShapes < Amount11; NumberOfShapes++)
                    {
                        float angle = 360f/Amount11;
                        g.RotateTransform(angle);
                        {
                            try
                            {
                                switch(Amount10)
                                {
                                    case 0:
                                        if(Amount12) g.DrawArc(gPen, r1, 90, -180);
                                        else g.DrawArc(gPen, r1, -90, -180);
                                        break;
                                    case 1:
                                        g.DrawEllipse(gPen, r1);
                                        break;
                                    case 2:
                                        g.DrawRectangle(gPen, coordX, coordY, width, height);
                                        break;
                                }
                            }
                            catch{};
                        }
                    }
                }
            }
        }
    }

     

     

    ring2.png.5999467cf41c70e02db156b5da9360a5.png

     

    CircularShapes.zip

    • Like 1
    • Upvote 1
  4. CodeLab crashes if we use the slash character in the UI.

    Same for any mathematical symbol.

     

    oP8qyyJ.png

     

    Exception details:
    System.FormatException: Input string was not in a correct format.
       at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
       at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
       at PaintDotNet.Effects.UIBuilder.ControlType_SelectedIndexChanged(Object sender, EventArgs e)
       at System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e)
       at System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value)
       at System.Windows.Forms.ComboBox.set_Text(String value)
       at PaintDotNet.Effects.UIBuilder.ControlListView_SelectedIndexChanged(Object sender, EventArgs e)
       at System.Windows.Forms.ListView.OnSelectedIndexChanged(EventArgs e)
       at System.Windows.Forms.ListView.WmReflectNotify(Message& m)
       at System.Windows.Forms.ListView.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

  5. Hi EG0611,

    You can try this plugin. I don't know if it works with the Japanese characters.

    https://forums.getpaint.net/topic/111908-imageintext/

     

    Also you can use Shift+Magic Wand to select the entire background (even the hole in the characters).

    Then you have 2 options:

    1. Use Delete key to clear the background (if it have only a single color) and keep only the characters.

    2. Ctr+I (Invert) and Delete the characters and keep the background.

     

    For automatic tasks I don't think there is any PDN solution.

  6. Gradient shapes.

    Spoiler
    
    // Name: GradientShapes
    // Submenu: Render
    // Author: xod
    // Title: GradientShapes
    // Version: 1.0
    // Desc:
    // Keywords:
    // URL:
    // Help:
    
    #region UICode
    IntSliderControl Amount1 = 6; // [3,10] Sides
    IntSliderControl Amount2 = 250; // [3,1000] Size
    IntSliderControl Amount3 = 2; // [0,100] Border
    AngleControl Amount4 = 0; // [-180,180] Angle
    ColorWheelControl Amount5 = ColorBgra.FromBgr(255,0,0); // [Blue] First color
    ColorWheelControl Amount6 = ColorBgra.FromBgr(225,105,65); // [RoyalBlue] Second color
    ColorWheelControl Amount7 = ColorBgra.FromBgr(235,206,135); // [SkyBlue] Center color
    ColorWheelControl Amount8 = ColorBgra.FromBgr(255,0,0); // [Blue] Border color
    PanSliderControl Amount9 = Pair.Create(0.000,0.000); // Reflection point
    #endregion
    
    void Render(Surface dst, Surface src, Rectangle rect)
    {
        Rectangle sel = EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt();
        dst.CopySurface(src, rect.Location, rect);
        
        Point center = new Point(sel.Width/2 + sel.Left, sel.Height/2 + sel.Top);
        int sides = Amount1;
        int radius = Amount2;
        int width = Amount3;
        int angle = (int)Amount4;
        int rpx = (int)Math.Round((((Amount9.First + 1) / 2) * (sel.Right - sel.Left)) + sel.Left);
        int rpy = (int)Math.Round((((Amount9.Second + 1) / 2) * (sel.Bottom - sel.Top)) + sel.Top);
    
        ColorBgra c1 = Amount5;//first color
        ColorBgra c2 = Amount6;//second color
        ColorBgra cc = Amount7;//center color
        ColorBgra bc = Amount8;//border color
    
        using (RenderArgs ra = new RenderArgs(dst))
        {
            Graphics g = ra.Graphics;
            g.Clip = new Region(rect);
            g.SmoothingMode = SmoothingMode.AntiAlias;
    
            PointF[] vertices = CalculateVertices(sides, radius, angle, center);
            using(Pen myPen = new Pen(bc, width))
            {
                myPen.LineJoin = LineJoin.Round;
                using (PathGradientBrush pgrbr = new PathGradientBrush(vertices))
                {
                    pgrbr.CenterPoint = new Point(rpx, rpy);
                    pgrbr.CenterColor = cc;
                    switch (sides)
                    {
                        case 3:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1,
                            };
                            break;
    
                        case 4:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2
                            };
                            break;
    
                        case 5:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2, c1
                            };
                            break;
    
                        case 6:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2, c1, c2
                            };
                            break;
    
                        case 7:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2, c1, c2, c1
                            };
                            break;
    
                        case 8:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2, c1, c2, c1, c2
                            };
                            break;
                        case 9:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2, c1, c2, c1, c2, c1
                            };
                            break;
                        case 10:
                            pgrbr.SurroundColors = new Color[]
                            {
                                c1, c2, c1, c2, c1, c2, c1, c2, c1,c2
                            };
                            break;
                    }
                    g.FillPolygon(pgrbr, vertices);
                }
                if(Amount3 != 0)//outline shape
                {
                    g.DrawPolygon(myPen, vertices);
                }
            }
            g.Dispose();
        }
    }
    
    private PointF[] CalculateVertices(int Sides, int Radius, int startingAngle, Point Center)
    {
        List<PointF> points = new List<PointF>();
        float step = 360.0f / Sides;
        float Angle = startingAngle;
        for (double i = startingAngle; i < startingAngle + 360.0; i += step)
        {
            points.Add(DegreesToXY(Angle, Radius, Center));
            Angle += step;
        }
        return points.ToArray();
    }
    
    private PointF DegreesToXY(float degrees, float radius, Point Origin)
    {
        PointF xy = new PointF();
        double radians = degrees * Math.PI / 180.0;
        xy.X = (float)Math.Cos(radians) * radius + Origin.X;
        xy.Y = (float)Math.Sin(-radians) * radius + Origin.Y;
        return xy;
    }
    

     

     

    GradientShapes.zip

    • Upvote 1
×
×
  • Create New...