virtual public void Configure() { FractalSettingsDialog dia = new FractalSettingsDialog(); dia.Parameters = (IFractalParameters)this.Parameters.Clone(); if (dia.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.Parameters = dia.Parameters; } }
void OnImageZoomed(Point p1, Point p2) { IFractalParameters pars = frac.Parameters; double x1f, y1f; double x2f, y2f; ScreenToFractal(p1.X, p1.Y, out x1f, out y1f); ScreenToFractal(p2.X, p2.Y, out x2f, out y2f); double XN = (x2f + x1f) / 2.0; double YN = (y2f + y1f) / 2.0; double WFN = (x2f - x1f); double HFN = (y2f - y1f); pars.SetValue("X", XN); pars.SetValue("Y", YN); pars.SetValue("W", WFN); pars.SetValue("H", HFN); RenderFractal(); }
bool ScreenToFractal(double X, double Y, out double XF, out double YF) { if (pictureBox2.Image != null) { int off_x = pictureBox2.Width - pictureBox2.Image.Width; int off_y = pictureBox2.Height - pictureBox2.Image.Height; off_x /= 2; off_y /= 2; if (X > off_x && X < (off_x + pictureBox2.Image.Width) && Y > off_y && Y < (off_y + pictureBox2.Image.Height)) { X -= off_x; Y -= off_y; IFractalParameters pars = frac.Parameters; double FracX = (double)pars.GetValue("X"); double FracY = (double)pars.GetValue("Y"); double FracWidth = (double)pars.GetValue("W"); double FracHeight = (double)pars.GetValue("H"); double FracX1 = FracX - 0.5 * FracWidth; double FracY1 = FracY - 0.5 * FracHeight; // PicW : X = FracWidth : dxf // pictureBox2.Image.Width : X = FracWidth : dxf double dxf = FracWidth * X / pictureBox2.Image.Width; double dyf = FracHeight * Y / pictureBox2.Image.Height; XF = FracX1 + dxf; YF = FracY1 + dyf; return(true); } } XF = 0; YF = 0; return(false); }