📄 mandelbrot.cs
字号:
using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.Xml.Serialization;
using System.IO;
using System.Windows.Forms;
using System.Threading;
namespace Fractals
{
public class Mandelbrot : FractalSet
{
public Mandelbrot()
{
}
protected override Color GetColorVal( double RealC, double ImaginaryC )
{
double RealZ = 0;
double ImaginaryZ = 0;
double RealZ2 = 0;
double ImaginaryZ2 = 0;
int ColorIndex = 0;
while( (ColorIndex < _MaxIter) && (RealZ2 + ImaginaryZ2 < _MaxMagSquared) )
{
RealZ2 = RealZ * RealZ;
ImaginaryZ2 = ImaginaryZ * ImaginaryZ;
ImaginaryZ = 2 * ImaginaryZ * RealZ + ImaginaryC;
RealZ = RealZ2 - ImaginaryZ2 + RealC;
ColorIndex++;
}
return( Color.FromArgb(_Color[ColorIndex % _MaxColors]) );
}
public void ReadSettings( string pathname )
{
MandelbrotSettings settings;
try
{
XmlSerializer serializer = new XmlSerializer( typeof(MandelbrotSettings) );
TextReader reader = new StreamReader( pathname );
settings = (MandelbrotSettings)serializer.Deserialize( reader );
reader.Close();
}
catch
{
settings = new MandelbrotSettings();
}
_MaxIter = settings.Iterations;
_realCenter = settings.RealCenter;
_imgCenter = settings.ImgCenter;
_deltaReal = settings.Scale;
_deltaImg = _deltaReal;
_Color = settings.ColorMap;
}
public void SaveSettings( string pathname )
{
MandelbrotSettings settings = new MandelbrotSettings();
settings.Iterations = _MaxIter;
settings.RealCenter = _realCenter;
settings.ImgCenter = _imgCenter;
settings.Scale = _deltaReal;
settings.ColorMap = _Color;
XmlSerializer serializer = new XmlSerializer( typeof(MandelbrotSettings) );
TextWriter writer = new StreamWriter( pathname );
serializer.Serialize( writer, settings );
writer.Close();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -