MadJik Posted November 14, 2006 Share Posted November 14, 2006 SpiroShapes aka Drawing Curved Shapes What's this? Based directly on BoltBait code for his Polygon.dll, another way to draw amazing lines/curves: EDIT: Old CodeLab code replaced by plugin presentation! I've called it SpiroShapes, because it makes me think about the 'drawing machine' Spirograf. Some examples... 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 Render. 1 Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
BoltBait Posted November 14, 2006 Share Posted November 14, 2006 Madjik, while clearly fascinating, how do you predict what will happen when you adjust the various inputs? In other words, in the original final script, you can clearly guess that when you change verticies from 5 to 6, you can guess that you will go from drawing a pentagon to a hexagon. In yours, increasing verticies makes the curves smoother. But, what is coefficient a, b, and c? What do they 'mean'? Oh, and to answer your question about line width... Getting the specified line width from the UI is easy: int LineWidth = (int)EnvironmentParameters.BrushWidth; As for how to modify my line drawing routine to take advantage of it (AND antialias the resulting line), now that's another story. Quote Click to play: Download: BoltBait's Plugin Pack | CodeLab | and how about a Computer Dominos Game Link to comment Share on other sites More sharing options...
MadJik Posted November 14, 2006 Author Share Posted November 14, 2006 Well, I'm not able to explain sin/cos here in english... Also it is difficult to pre-evaluate the curve we will obtain when we change CoefA or CoefB or CoefC. First formula is : RO = sin( CoefA * ANGLE / CoefB) This is a simple sinus curve. Then to draw a circle we need to calculate X,Y X = Radius * cos(ANGLE) Y = Radius * sin(ANGLE) Radius is normaly a "fix" value. if you put that in a loop for ANGLE = -PI to PI you could plot a circle. But in this program instead Radius, we use the first formula. It means the radius is changing at each plot... CoefA is the number of period for the sinus curve (in a period sin goes like this : 0...-1...0...1...0). Each -1 or 1 is a peak. If CoefA = 2 then we have 4 peaks. 6 : 12 peaks, etc... CoefB is a decal factor. CoefB=1 : no decal. You could see that I'm calling the peaks ! Experiment differentes values to feel how it works... Test (CoefC = CoefB): CoefA=2 CoefB=1 CoefA=6 CoefB=1 CoefA=7 CoefB=6 Change the type from Integer to Float and test CoefA=2 CoefB=0.5 CoefA=1.5 CoefB=1 (the fly) CoefC should be equal to CoefB if we want to have all periods finished. If we choose CoefC < CoefB then we obtain an "open" curve. If we choose CoefC > CoefB then we redraw on the same plots. It's too much plots. NB: In the formula we have : CoefA / CoefB It means CoefA=1/CoefB=2 is same as CoefA=2/CoefB=4 ,CoefA=3/CoefB=6, etc... I have an excel file with the graph function PM me if you want it... I have used some curves and polar inversion to do this: http://paintdotnet.12.forumer.com/viewtopic.php?p=16898#16898 Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
MadJik Posted November 22, 2006 Author Share Posted November 22, 2006 Well, I make my first GUI using Visual Studio 2005 Express (free). I took other source (Clouds Effect) as model because C# isn't a language I know. Now, it seems to work but I have an error if the image is too small (index out of bound)... and the preview does show the full lines (final rendering also... but last display is Ok). I would appreciate if someone could have a look at the source and fix the bugs for me. After that I will create explanation for this plug-in.... here is the DLL here is the source Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
barkbark00 Posted November 22, 2006 Share Posted November 22, 2006 I crashed Paint.NET just now using the Theta curves plugin. I think this is the error you were talking about. It happened when I set the vertices's to "0". Here is the crash log: This text file was created because Paint.NET crashed. Please e-mail this file to paint.net@hotmail.com so we can diagnose and fix the problem. Application version: Paint.NET v3.0 (Alpha 3 Release build 3.0.2500.35765) Time of crash: 11/22/2006 9:25:41 AM Application uptime: 00:00:23.9064030 OS Version: 5.1.2600.131072 Service Pack 2 Workstation x86 .NET Framework version: 2.0.50727.42 x86 Processor: 1x Intel® Pentium® 4 CPU 2.66GHz Physical memory: 511 MB Locale: pdnr.c: en-US, hklm: en-US, hkcu: n/a, cc: en-US, cuic: en-US Exception details: System.ArgumentOutOfRangeException: Value of '1' is not valid for 'Value'. 'Value' should be between 'Minimum' and 'Maximum'. Parameter name: Value at System.Windows.Forms.NumericUpDown.set_Value(Decimal value) at PaintDotNet.Effects.ThetaCurvesConfigDialog.trackbar_Vertices_ValueChanged(Object sender, EventArgs e) at System.Windows.Forms.TrackBar.OnScroll(EventArgs e) at System.Windows.Forms.TrackBar.WndProc(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ------------------------------------------------------------------------------ Quote Take responsibility for your own intelligence. -Rick Brewster Link to comment Share on other sites More sharing options...
BoltBait Posted November 24, 2006 Share Posted November 24, 2006 There is a reason for the following comment in the original code: int verticies = 5; // number of points (3-10?), default 5, slider The range for verticies can not go below 3. Actually, it can not go below 1. If Verticies is 0 you will get a division by zero error. Quote Click to play: Download: BoltBait's Plugin Pack | CodeLab | and how about a Computer Dominos Game Link to comment Share on other sites More sharing options...
MadJik Posted November 24, 2006 Author Share Posted November 24, 2006 There is a reason for the following comment in the original code: int verticies = 5; // number of points (3-10?), default 5, slider The range for verticies can not go below 3. Actually, it can not go below 1. If Verticies is 0 you will get a division by zero error. For the CodeLab on this topic, you are right ! And of course if vertice is 0 we get a division by zero error. But with vertice 1 or 2 the code is useless cos we get a single point or a line... Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
MadJik Posted November 24, 2006 Author Share Posted November 24, 2006 Well, I make my first GUI using Visual Studio 2005 Express (free).I took other source (Clouds Effect) as model because C# isn't a language I know. Now, it seems to work but I have an error if the image is too small (index out of bound)... and the preview does show the full lines (final rendering also... but last display is Ok). I would appreciate if someone could have a look at the source and fix the bugs for me. After that I will create explanation for this plug-in.... here is the DLL here is the source Updated ! I changed "Double" to "Float" and it is a bit faster now. Some bugs corrected as well. I still need your help for the bug I get when it is small size image... I test with image size 600x600 px and it is Ok... This is an example after some works... I still like spheres...I used my ThetaCurves DLL (beta version with some bugs)... http://paintdotnet.12.forumer.com/viewtopic.php?p=17314#17314 Also the gradient effect and the new distorb sphere effect... EDIT: link added http://paintdotnet.12.forumer.com/viewtopic.php?p=12461#12461 (ok need some more blur...) Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
Tubular Tos Posted November 24, 2006 Share Posted November 24, 2006 :wink: Thanks ! Madjik ! Nice work ! Quote To be free To be wild And to be Just like a child Mike Oldfield http://www.myspace.com/tubulartos Link to comment Share on other sites More sharing options...
MadJik Posted December 4, 2006 Author Share Posted December 4, 2006 This picture has been made using the Polygones.dll here is the Polygones.DLL EDIT: here is the Polygones sources __________________________ Also, I have made some changes to fix bugs on the ThetaCurves.DLL here is the DLL here is the source Bugs fixed: Missing dot in some curves making the fill effect useless...Tiling is now working. Advice is to use the Dot mode (Line mode takes too long time)Since Paint.net V3.0 the error for small pictures seams self corrected! Known Bugs: Preview isn't shown perfectly... ==> to BoltBait : Could you change the topic title (Codelab + Plugin...)? Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
barkbark00 Posted January 2, 2007 Share Posted January 2, 2007 MadJik: you should add the anti-aliasing function of your Oblique plugin to the Theta curves and Polygons plugins... Quote Take responsibility for your own intelligence. -Rick Brewster Link to comment Share on other sites More sharing options...
MadJik Posted January 2, 2007 Author Share Posted January 2, 2007 It is (quite) easy to use the standard pre-programmed GUI for 1,2 or 3 sliders... When we need something else than sliders or more than 3 the challenge is more difficult (for me). I'll miss time next days for that. So it will be done in 1-2 weeks... Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
MadJik Posted January 17, 2007 Author Share Posted January 17, 2007 I have made some changes on the ThetaCurves.DLL It's faster now! here is the DLL The source isn't uploaded (so it's linked to previous version) /////////////// I can't find a way to add anti-alias on Polygone and Thetacurve effects... So if someone could be kind to point me some code for that... /////////////// Also I can't find the code to organize the submenu plugins (it seems simple for Rick, but for me I need a source code)... So if someone could be kind to point me some code for that too... EDIT: I've find a solution in the paint.net source v2.72 : Text search on the full folder "submenu" point me out the bulge code with the solution in! Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
MadJik Posted January 24, 2007 Author Share Posted January 24, 2007 Polygone Effect : download the new version! Faster ! Slider for rotation (instead size) Effect in the submenu "Effects/Shapes" here is the DLL ____________________________________________ Thetacurves Effect : download the new version! it's now calles Spiro-Shapes Effect Faster ! Effect in the submenu "Effects/Shapes" here is the DLL ____________________________________________ To install: Close Paint.net Unzip and (re)place the DLL in your Effect folder usualy: C:\Program Files\Paint.NET\Effects You could delete the Thetacurves.dll if it exists! Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
barkbark00 Posted January 24, 2007 Share Posted January 24, 2007 Have you added anti-aliasing to the effects? Quote Take responsibility for your own intelligence. -Rick Brewster Link to comment Share on other sites More sharing options...
MadJik Posted January 24, 2007 Author Share Posted January 24, 2007 Have you added anti-aliasing to the effects? No, sorry! The methode I thought about isn't working well for that! I would appreciate if someone could help for this part! Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
Ghost_ARCHER Posted January 31, 2007 Share Posted January 31, 2007 A conceptional star: vb code illustrates Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Drawing.Imaging Imports System.Text 'option strict off Public Class Form1 Inherits System.Windows.Forms.Form #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Private Sub InitializeComponent() ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(592, 573) Me.Name = "Form1" Me.Text = "Form1" End Sub #End Region Private Sub form1_paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint Dim gr As Graphics = e.Graphics gr.Clear(Color.Azure) Dim n As Integer = 5 Dim a As Double = 0.0 Dim b As Double = 0.0 Dim R1 As Integer = 250 'CInt(Math.Min(Me.ClientSize.Width, Me.ClientSize.Height) / 2 - 4) Dim R2 As Integer = 125 'CInt(R1 / 2) Dim ray As Integer = 3 Dim x1, y1, x2, y2 As Integer Dim x0 As Integer = 300 ' CInt(Me.ClientSize.Width / 2) Dim y0 As Integer = 300 ' CInt(Me.ClientSize.Height / 2) Dim vx1, vy1, vx2, vy2 As Double Dim aa As Double = Math.PI / n Dim sina As Double = Math.Sin(aa) Dim cosa As Double = Math.Cos(aa) Dim sin2a As Double = 2 * cosa * sina Dim cos2a As Double = 1 - 2 * sina * sina aa = Math.PI * a / 180 Dim sinb As Double = Math.Sin(aa) Dim cosb As Double = Math.Cos(aa) aa = Math.PI * b / 180 Dim sinc As Double = Math.Sin(aa) Dim cosc As Double = Math.Cos(aa) vx1 = R1 * cosb vy1 = R1 * sinb vx2 = CInt(R2 * cosa) vy2 = CInt(R2 * sina) Dim vtx, vty As Double vtx = vx2 vty = vy2 vtx = CInt(vx2 * cosc + vy2 * sinc) vty = CInt(-vy2 * sinc + vy2 * cosc) vx2 = vtx vy2 = vty vtx = CInt(vx1 * cosc + vy1 * sinc) vty = CInt(-vx1 * sinc + vy1 * cosc) vx1 = vtx vy1 = vty x1 = x0 + vx1 y1 = x0 + vy1 x2 = x0 + vx2 y2 = x0 + vy2 Dim i As Integer For i = 1 To n Step 1 If ray = 1 Or ray = 3 Then gr.DrawLine(Pens.Red, x0, y0, x1, y1) gr.DrawLine(Pens.Red, x0, y0, x2, y2) End If If ray = 2 Or ray = 3 Then gr.DrawLine(Pens.Red, x1, y1, x2, y2) End If vtx = vx2 vty = vy2 vx2 = CInt(vtx * cos2a + vty * sin2a) vy2 = CInt(-vtx * sin2a + vty * cos2a) x2 = x0 + vx2 y2 = y0 + vy2 If ray = 2 Or ray = 3 Then gr.DrawLine(Pens.Red, x2, y2, x1, y1) End If vtx = vx1 vty = vy1 vx1 = CInt(vtx * cos2a + vty * sin2a) vy1 = CInt(-vtx * sin2a + vty * cos2a) x1 = x0 + vx1 y1 = y0 + vy1 Next End Sub End Class This is a single program. I don't know how to match the interface to paint.net BTW, I just realized when too many rotation applied, the round error will cause R1 gets shorter. Therefore, cos and sin might be better Quote Link to comment Share on other sites More sharing options...
MadJik Posted January 31, 2007 Author Share Posted January 31, 2007 @Ghost_ARCHER: I transformed your VB into codelab and made this star: This is the codelab: void Render(Surface dst, Surface src, Rectangle rect) { int n =7; float a =0; float b =0; int R1 =290; int R2=R1/4; int ray =3; PdnRegion selectionRegion = EnvironmentParameters.GetSelection(src.Bounds); Rectangle selection = this.EnvironmentParameters.GetSelection(src.Bounds).GetBoundsInt(); long CenterX = (long)(((selection.Right - selection.Left) / 2) + selection.Left); long CenterY = (long)(((selection.Bottom - selection.Top) / 2) + selection.Top); int pt = 0; // calculate actual radius float r = (float)(Math.Min(CenterX - selection.Left, CenterY - selection.Top)); // Half Width is integer... So workWidth is even long workHWidth = (int)r + 1; long workWidth = (workHWidth + 1) * 2; long workPoints = workWidth * workWidth; bool[] MapDraw = new bool[workPoints]; for (int j = 0; j < workPoints; ++j) { MapDraw[j] = false; } ColorBgra PrimColor = (ColorBgra)EnvironmentParameters.PrimaryColor; float x1, y1, x2, y2; long x0 = CenterX; long y0 = CenterY; float vx1, vy1, vx2, vy2; float aa = (float)(Math.PI / n); float sina = (float)Math.Sin(aa); float cosa = (float)Math.Cos(aa); float sin2a = (float)(2 * cosa * sina); float cos2a = 1 - 2 * sina * sina; aa = (float)(Math.PI * a / 180); float sinb = (float)Math.Sin(aa); float cosb = (float)Math.Cos(aa); aa = (float)(Math.PI * b / 180); float sinc = (float)Math.Sin(aa); float cosc = (float)Math.Cos(aa); vx1 = R1 * cosb; vy1 = R1 * sinb; vx2 = (R2 * cosa); vy2 = (R2 * sina); float vtx, vty; vtx = vx2; vty = vy2; vtx = (vx2 * cosc + vy2 * sinc); vty = (-vy2 * sinc + vy2 * cosc); vx2 = vtx; vy2 = vty; vtx = (vx1 * cosc + vy1 * sinc); vty = (-vx1 * sinc + vy1 * cosc); vx1 = vtx; vy1 = vty; x1 = (float)(x0 + vx1); y1 = (float)(y0 + vy1); x2 = (float)(x0 + vx2); y2 = (float)(y0 + vy2); // ================== FIRST LOOP ========================== // Fill binary table with the plotted polygone for (int i = 1; i < n+1; i++) { if (ray != 2) { DrawLine(x0, y0, x1, y1, MapDraw, workWidth, true); } if (ray != 1) { DrawLine(x1, y1, x2, y2, MapDraw, workWidth, true); } vtx = vx2; vty = vy2; vx2 = (vtx * cos2a + vty * sin2a); vy2 = (-vtx * sin2a + vty * cos2a); x2 = x0 + vx2; y2 = y0 + vy2; if (ray != 1) { DrawLine(x2, y2, x1, y1, MapDraw, workWidth, true); } vtx = vx1; vty = vy1; vx1 = (vtx * cos2a + vty * sin2a); vy1 = (-vtx * sin2a + vty * cos2a); x1 = x0 + vx1; y1 = y0 + vy1; } // ================== SECOND LOOP ========================== // Final rendering for (int y = rect.Top; y < rect.Bottom; y++) { for (int x = rect.Left; x < rect.Right; x++) { if (selectionRegion.IsVisible(x, y)) { dst[x, y] = src[x, y]; if (Math.Abs(y - CenterY) <= (int)(workHWidth)) { if (Math.Abs(x - CenterX) <= (int)(workHWidth)) { pt = (int)((x - CenterX + (workHWidth)) + workWidth * (y - CenterY + (workHWidth))); if (MapDraw[pt] == true) { dst[x, y] = PrimColor; } } } } } } } private void DrawLine(float x1, float y1, float x2, float y2, Boolean[] MapDraw, float workWidth, bool lines) { int roundx, roundy, i, pt; float xi, yi, dx, dy, x, y, l; float arrondi = 0.0f; if (lines) { dx = x2 - x1; dy = y2 - y1; if (Math.Abs(dx) > Math.Abs(dy)) { l = dx; } else { l = dy; } if (l < 0) { DrawLine(x2, y2, x1, y1, MapDraw, workWidth, lines); } else { xi = dx / l; yi = dy / l; x = x1; y = y1; roundx = (int)(x + arrondi); roundy = (int)(y + arrondi); pt = (int)(roundx + workWidth * roundy); if (pt < 0) pt = 1; if (pt > (workWidth * workWidth)) pt = 1; MapDraw[pt] = true; for (i = 0; i <= l; i++) { x = x + xi; y = y + yi; roundx = (int)(x + arrondi); roundy = (int)(y + arrondi); pt = (int)(roundx + workWidth * roundy); if (pt < 0) pt = 1; if (pt > (workWidth * workWidth)) pt = 1; MapDraw[pt] = true; } } } else { roundx = (int)(x2 + arrondi); roundy = (int)(y2 + arrondi); pt = (int)(roundx + workWidth * roundy); if (pt < 0) pt = 1; if (pt > (workWidth * workWidth)) pt = 1; MapDraw[pt] = true; } } Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
Ghost_ARCHER Posted January 31, 2007 Share Posted January 31, 2007 Wow! You makes it looks very pro. I am coming up with a new idea, a plugin to make gears -- in fact, it should be generally to be a multiple folded center point symmetric, with the target curve represents by bezier curve (therefore we are dealing with points in fact and finally connect them by bezier curve) --- need some restriction to prevent it looks stupid. BTW, I am sorry the vector operation is not flawless -- even it is fast to calculate a 3000 vertex star, the end can't be closed because of the round off error. Only cos and sin can survive. Dim n As Integer = 7 Dim a As Double = 30.0 Dim b As Double = 0.0 Dim R1 As Integer = 250 'CInt(Math.Min(Me.ClientSize.Width, Me.ClientSize.Height) / 2 - 4) Dim R2 As Integer = 200 'CInt(R1 / 2) Dim ray As Integer = 2 Dim x1, y1, x2, y2, xt, yt As Integer Dim x0 As Integer = 300 ' CInt(Me.ClientSize.Width / 2) Dim y0 As Integer = 300 ' CInt(Me.ClientSize.Height / 2) Dim aa As Single = a * Math.PI / 180 Dim bb As Single = b * Math.PI / 180 Dim cc As Single = Math.PI / n xt = x0 + R2 * Math.Cos(bb - cc) yt = x0 + R2 * Math.Sin(bb - cc) Dim i As Integer For i = 0 To n Step 1 x1 = x0 + R1 * Math.Cos(aa + bb + 2 * i * cc) y1 = x0 + R1 * Math.Sin(aa + bb + 2 * i * cc) x2 = x0 + R2 * Math.Cos(bb + (2 * i + 1) * cc) y2 = x0 + R2 * Math.Sin(bb + (2 * i + 1) * cc) If ray = 2 Or ray = 3 Then gr.DrawLine(Pens.Red, x1, y1, x2, y2) gr.DrawLine(Pens.Red, x1, y1, xt, yt) End If If ray = 1 Or ray = 3 Then gr.DrawLine(Pens.Red, x0, y0, x1, y1) gr.DrawLine(Pens.Red, x0, y0, x2, y2) End If xt = x2 yt = y2 Next The bezier curve to draw gear ends with result, might be used somewhere else Private Sub form2_paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint Dim gr As Graphics = e.Graphics Dim n As Integer = 12 Dim i As Integer Dim R1, R2 As Integer Dim x0 As Integer = 150, y0 As Integer = 150 R1 = 100 R2 = 70 Dim s As Integer s = 1 ' local variables Dim A1, A2, A3, A4 As Double Dim x1, y1, x2, y2, x3, y3, x4, y4, R As Integer A1 = Math.PI / n A2 = Math.PI * 0 / 180 x1 = x0 + R1 * Math.Cos(A2) y1 = y0 + R1 * Math.Sin(A2) A3 = A2 + s * Math.PI / 3 x2 = x0 + 2 * R1 * Math.Cos(A3) y2 = y0 + 2 * R1 * Math.Sin(A3) R = R1 For i = 1 To 2 * n 'adjust the reference direction If R = R1 Then R = R2 Else R = R1 End If A3 = i * A1 + A2 x3 = x0 + R * Math.Cos(A3) y3 = y0 + R * Math.Sin(A3) A4 = A3 - s * Math.PI / 3 x4 = x0 + 2 * R * Math.Cos(A4) y4 = y0 + 2 * R * Math.Sin(A4) gr.DrawBezier(Pens.Black, x1, y1, x2, y2, x4, y4, x3, y3) x1 = x3 y1 = y3 x2 = 2 * x3 - x4 y2 = 2 * y3 - y4 'gr.DrawLine(Pens.Black, x0, y0, x1, y1) 'gr.DrawLine(Pens.Black, x1, y1, x2, y2) Next gr.Dispose() End Sub Quote Link to comment Share on other sites More sharing options...
MadJik Posted February 9, 2007 Author Share Posted February 9, 2007 I've created another plugin based on Ghost_ARCHER visual basic code (the first version, not the one with bezier curves). (picture from Ghost_ARCHER) It's allow you to draw stars (different than Boltbait polygon http://paintdotnet.12.forumer.com/viewtopic.php?t=2580 ) Effect in the submenu "Effects/Render". Anti-Aliasing methode (checkbox). Use the actual brush width. here is the DLL ____________________________________________ To install: Close Paint.net Unzip and (re)place the DLL in your Effect folder usualy: C:\Program Files\Paint.NET\Effects ____________________________________________ here is the Sources An example where I've used this plugin: Another desktop abstract Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
MadJik Posted February 9, 2007 Author Share Posted February 9, 2007 Look at the first post of this topic for the lastest version of the SpiroShape plugin. http://paintdotnet.12.forumer.com/viewtopic.php?p=16888#16888 Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
barkbark00 Posted February 10, 2007 Share Posted February 10, 2007 Cool plugin man! Please never change it! Quote Take responsibility for your own intelligence. -Rick Brewster Link to comment Share on other sites More sharing options...
MadJik Posted February 10, 2007 Author Share Posted February 10, 2007 Thanks... No plan to change it. I'm working on another one with bezier's curves... Quote My DeviantArt | My Pictorium | My Plugins | Donate via Paypal Link to comment Share on other sites More sharing options...
josh181830 Posted March 1, 2007 Share Posted March 1, 2007 geez... you guys speak a whole other language... Quote Link to comment Share on other sites More sharing options...
The_Lionhearted Posted March 2, 2007 Share Posted March 2, 2007 Hey guys...came up with this odd result after playing with the effects here: I created a flower-shape (ala http://paintdotnet.12.forumer.com/viewtopic.php?t=3731), selected the center, deleted it, and then tried to add a star in the middle...it turned out that it also added some sort of strange black border as well. Is this a glitch perhaps? Quote My Gallery Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.