// calculate all points // djm original mandelbrot() private void Mandelbrot() { int x, y; float h, b, alt = 0.0f; action = false; // Cursor = Cursors.WaitCursor; //jh not needed // setCursor(c1); // djm original java Text = "C3375905"; message.Text = "Mandelbrot-Set will be produced - please wait..."; // showStatus("Mandelbrot-Set will be produced - please wait..."); // djm original java for (x = 0; x < x1; x += 2) // x less than width - draw lines from left to right for (y = 0; y < y1; y++) // draw 1 pixel at a time { h = Pointcolour(xstart + xzoom * (double)x, ystart + yzoom * (double)y); // color value if (h != alt) { b = 1.0f - h * h; // brightness var customColour = new HSBColor(h * ScaleUp, 0.8f * ScaleUp, b * ScaleUp); // hsb colour var convertedColour = HSBColor.FromHSB(customColour); // convert hsb to rgb then make a Java Color // Color col = Color.getHSBColor(h,0.8f,b); // djm not needed // int red = col.getRed(); // djm not needed // int green = col.getGreen(); // djm not needed // int blue = col.getBlue(); // djm not needed pen = new Pen(convertedColour); alt = h; } g1.DrawLine(pen, x, y, x + 1, y); } // Cursor = Cursors.Cross; //jh not needed // setCursor(c1); // djm original java message.Text = "Mandelbrot-Set ready - please select zoom area with pressed mouse."; // showStatus("Mandelbrot-Set ready - please select zoom area with pressed mouse."); // djm original java action = true; }
public static Color FromHSB(HSBColor hsbColor) { float r = hsbColor.b; float g = hsbColor.b; float b = hsbColor.b; if (hsbColor.s != 0) { float max = hsbColor.b; float dif = hsbColor.b * hsbColor.s / 255f; float min = hsbColor.b - dif; float h = hsbColor.h * 360f / 255f; if (h < 60f) { r = max; g = h * dif / 60f + min; b = min; } else if (h < 120f) { r = -(h - 120f) * dif / 60f + min; g = max; b = min; } else if (h < 180f) { r = min; g = max; b = (h - 120f) * dif / 60f + min; } else if (h < 240f) { r = min; g = -(h - 240f) * dif / 60f + min; b = max; } else if (h < 300f) { r = (h - 240f) * dif / 60f + min; g = min; b = max; } else if (h <= 360f) { r = max; g = min; b = -(h - 360f) * dif / 60 + min; } else { r = 0; g = 0; b = 0; } } return Color.FromArgb ( hsbColor.a, (int)Math.Round(Math.Min(Math.Max(r, 0), 255)), (int)Math.Round(Math.Min(Math.Max(g, 0), 255)), (int)Math.Round(Math.Min(Math.Max(b, 0), 255)) ); }