Пример #1
0
        public FractalBox(FractalView fractalView, Renderer renderer)
            : base()
        {
            FractalView = fractalView;
            Renderer = renderer;

            renderer.fractalBox = this;

            ResizeRedraw = false;
            BackColor = Color.Black;
            Dock = DockStyle.Fill;
            Margin = new Padding(0);

            var renderLoop = new System.Windows.Forms.Timer();
            renderLoop.Tick += (object o, EventArgs e) => Invalidate();
            renderLoop.Interval = 1000 / 30;
            renderLoop.Start();
            
            Bitmap = new Bitmap(SampleWidth, SampleHeight);

            Paint += paint;
            Resize += resizeControl;
            ControlAdded += resizeControl;

            Hover += delegate { };

            MouseDown += (object sender, MouseEventArgs e) => PanStart(e.Location);

            MouseMove += (object sender, MouseEventArgs e) =>
            {
                if (panning)
                    PanUpdate(e.Location);
                else
                    mousePosition = e.Location;
                    Hover.Invoke(FromScreenCoords(e.Location));
            };

            MouseEnter += (object sender, EventArgs e) => Hovered = true;

            MouseLeave += (object sender, EventArgs e) => Hovered = false;

            MouseUp += (object sender, MouseEventArgs e) => PanEnd(e.Location);

            MouseDoubleClick += (object sender, MouseEventArgs e) => FractalView.SetCenter(FromScreenCoords(e.Location));
        }