Ich versuche einen Weg zu finden, mein Mandelbrot auf Klick zu vergrößern. Ich habe es so, wenn ich es ein wenig zoome reinziehe aber es bewegt das Mandelbrot nicht entsprechend.Zoom auf Mandelbrot
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Numerics;
namespace Project_V2
{
public partial class FractalGen : Form
{
public double zoom = 2.4;
public FractalGen()
{
InitializeComponent();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
zoom -= 0.3;
Mandelbrot();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
Mandelbrot();
}
private void timer1_Tick(object sender, EventArgs e)
{
}
private void Mandelbrot()
{
Bitmap bm = new Bitmap(pictureBox1.Width, pictureBox1.Height);
DateTime StartT = DateTime.Now;
for (int x = 0; x < pictureBox1.Width; x++)
{
for (int y = 0; y < pictureBox1.Height; y++)
{
double a = (double)(x - (pictureBox1.Width/1.25))/(double)(pictureBox1.Width/zoom);
double b = (double)(y - (pictureBox1.Height/2))/(double)(pictureBox1.Height/zoom);
Complex C = new Complex(a, b);
Complex Z = new Complex(0, 0);
int u = 0;
do
{
u++;
Z = Z * Z;
Z = Z + C;
double Mag = Complex.Abs(Z);
if (Mag > 2.0) break;
} while (u < 255);
Color rgbInside = Color.FromArgb(0, 0, 0);
Color rgbOutside = Color.FromArgb(u >= 127 ? 255 : 2 * u, u >= 127 ? (u - 127) : 0, 0);
bm.SetPixel(x, y, u < 255 ? rgbOutside : rgbInside);
}
}
pictureBox1.Image = bm;
DateTime EndT = DateTime.Now;
string Time = Convert.ToString((EndT - StartT).TotalSeconds);
textBox1.Text = "Time Taken: " + Time + " Seconds";
}
private void button1_Click_1(object sender, EventArgs e)
{
zoom = 2.4;
Mandelbrot();
}
private void button2_Click(object sender, EventArgs e)
{
saveFileDialog1.ShowDialog();
}
private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)
{
string name = saveFileDialog1.FileName;
pictureBox1.Image.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Png);
}
}
}
Der aktuelle Code teilt die picturebox Breite und Höhe um einen Wert, aber ich will es haben, so dass es auf zoomt, wo ich auf. Wie könnte ich die Picturebox in Bezug auf wo ich klicken skalieren?
Sie müssen sich mit dem mouseposition abzurufen und zu arbeiten. Diese Antwort hat die Lösung, sogar bereit für eine Bildbox https://stackoverflow.com/questions/7055211/how-to-get-the-position-of-a-click –
Vergiss die Bilderbox und konzentriere dich auf die Daten! - Oh, das habe ich dir schon einmal gesagt und du hast es ignoriert. Nun, viel Glück dann .. – TaW
@TaW: _ "Ich habe dir das vorher gesagt" _ - in welchem Kontext? Gibt es eine gelöschte Frage, wo Sie diese Informationen zur Verfügung gestellt haben? Es würde helfen zu wissen, welche Ratschläge dem OP bereits gegeben wurden, um besser zu verstehen, was sie vielleicht bereits gehört haben und was sie vielleicht nur schwer verstehen können. –