| //See included source for full listing |
| private void drawFractal() |
| { |
| const double MaxColor = 255.0; |
| int nPens = (int)Math.Floor( MaxColor / frmOpt.gradientProg ); |
| Pen[] colorPens = new Pen[nPens]; |
| |
| double deltaRed = 0.0; |
| double deltaGreen = 0.0; |
| double deltaBlue = 0.0; |
| |
| if (frmOpt.chgRed) |
| { |
| if (frmOpt.redEnd > frmOpt.red) |
| { |
| deltaRed = (double)(frmOpt.redEnd - frmOpt.red) / nPens; |
| } |
| else |
| { |
| deltaRed = (-1) * (double)(frmOpt.red - frmOpt.redEnd) / nPens; |
| } |
| } |
| |
| if (frmOpt.chgGreen) |
| { |
| if (frmOpt.greenEnd > frmOpt.green) |
| { |
| deltaGreen = (double)(frmOpt.greenEnd - frmOpt.green) / nPens; |
| } |
| else |
| { |
| deltaGreen= (-1) * (double)(frmOpt.green - frmOpt.greenEnd) / nPens; |
| } |
| } |
| if (frmOpt.chgBlue) |
| { |
| if (frmOpt.blueEnd > frmOpt.blue) |
| { |
| deltaBlue = (double)(frmOpt.blueEnd - frmOpt.blue) / nPens; |
| } |
| else |
| { |
| deltaBlue = (-1) * (double)(frmOpt.blue - frmOpt.blueEnd) / nPens; |
| } |
| } |
| |
| for (int i = 0; i < nPens; i++) |
| { |
| colorPens[i] = new Pen(new SolidBrush(System.Drawing.Color.FromArgb(frmOpt.red + (int)(deltaRed*i), |
| frmOpt.green + (int)(deltaGreen*i), |
| frmOpt.blue + (int)(deltaBlue*i)))); |
| } |
| bmp = null; |
| if (frmOpt.isJulia) |
| { |
| drawJuliaFractal(colorPens); |
| } |
| else |
| { |
| drawMandelbrotFractal(colorPens); |
| } |
| } |