0

I have been working on this project to convert a mandelbrot from java to c# and am having problems when compiling. The form box comes up but no image is displaid. any help anybody could offered i would be extremely thankfull

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;


namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{


public Form1()
{
InitializeComponent();


pictureBox1.Image = bp;


}
public struct HSBColor
{
float h;
float s;
float b;
int a;

public HSBColor(float h, float s, float b)
{
this.a = 0xff;
this.h = Math.Min(Math.Max(h, 0), 255);
this.s = Math.Min(Math.Max(s, 0), 255);
this.b = Math.Min(Math.Max(b, 0), 255);
}

public HSBColor(int a, float h, float s, float b)
{
this.a = a;
this.h = Math.Min(Math.Max(h, 0), 255);
this.s = Math.Min(Math.Max(s, 0), 255);
this.b = Math.Min(Math.Max(b, 0), 255);
}

public float H
{
get { return h; }
}

public float S
{
get { return s; }
}

public float B
{
get { return b; }
}

public int A
{
get { return a; }
}

public Color Color
{
get
{
return FromHSB(this);
}
}

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))
);
}

}
private const int MAX = 256; // max iterations
private const double SX = -2.025; // start value real
private const double SY = -1.125; // start value imaginary
private const double EX = 0.6; // end value real
private const double EY = 1.125; // end value imaginary
private static int x1, y1, xs, ys, xe, ye;
private static double xstart, ystart, xende, yende, xzoom, yzoom;
private static bool action, rectangle, finished;
private static float xy;
private Image bp;
private Graphics g1;
private HSBColor HSBcol=new HSBColor();

public void init() // all instances will be prepared
{
//HSBcol = new HSB();
this.Size = new Size(640, 480);
finished = false;
x1 = this.pictureBox1.Width;
y1 = this.pictureBox1.Height;
xy = (float)x1 / (float)y1;
//?JAVA? picture = createImage(x1, y1);
//?JAVA? g1 = picture.getGraphics();
finished = true;
//mandelbrot();
}

public void destroy() // delete all instances
{
if (finished)
{
bp = null;
g1 = null;
GC.Collect(); // garbage collection
}
}

public void start()
{
action = false;
rectangle = false;
initvalues();
xzoom = (xende - xstart) / (double)x1;
yzoom = (yende - ystart) / (double)y1;
mandelbrot();
}

public void stop()
{
}

private void mandelbrot() // calculate all points
{
int x, y;
float h, b, alt = 0.0f;

action = false;
for (x = 0; x < x1; x += 2)
for (y = 0; y < y1; y++)
{
h = pointcolour(xstart + xzoom * (double)x, ystart + yzoom * (double)y); // color value
if (h != alt)
{
b = 1.0f - h * h; // brightnes

Color color = HSBColor.FromHSB(new HSBColor(h * 255, 0.8f * 255, b * 255)); // VERY IMPORTANT
//djm
alt = h;
Pen pen = new Pen(color);
g1.DrawLine(pen, x, y, x + 1, y);
}
}
action = true;
}

private float pointcolour(double xwert, double ywert) // color value from 0.0 to 1.0 by iterations
{
double r = 0.0, i = 0.0, m = 0.0;
int j = 0;

while ((j < MAX) && (m < 4.0))
{
j++;
m = r * r - i * i;
i = 2.0 * r * i + ywert;
r = m + xwert;
}
return (float)j / (float)MAX;
}

private void initvalues() // reset start values
{
xstart = SX;
ystart = SY;
xende = EX;
yende = EY;
if ((float)((xende - xstart) / (yende - ystart)) != xy)
xstart = xende - (yende - ystart) * (double)xy;
}

Edited by ross88: n/a

2
Contributors
1
Reply
3
Views
6 Years
Discussion Span
Last Post by nick.crane
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.