Esempio n. 1
0
        private void gradientBox_MouseClick(object sender, MouseEventArgs e)
        {
            PhotonGradient gradient = gradientBox.Gradient;

            float u = (float)e.X / gradientBox.Width * gradient.Length + gradient.Start;
            int   i = gradient.ClosestIndex(u);

            if (e.Button == MouseButtons.Left)
            {
                PhotonGradient.PhotonPosition pp = gradient[i];
                if (ModifierKeys == Keys.Control)
                {
                    pp.Photon   = gradient[u];
                    pp.Position = u;
                    gradient.Add(pp);
                    gradientBox.UpdateRender();
                }
                else
                {
                    PhotonDialog photonDialog = new PhotonDialog(this);
                    photonDialog.Photon = pp.Photon;
                    if (photonDialog.ShowDialog() == DialogResult.OK)
                    {
                        pp.Photon   = photonDialog.Photon;
                        gradient[i] = pp;
                        gradientBox.UpdateRender();
                    }
                }
            }
            else if (e.Button == MouseButtons.Right && i > 0 && i < gradient.PhotonPositionCount - 1)
            {
                gradient.Remove(i);
                gradientBox.UpdateRender();
            }
        }
Esempio n. 2
0
 protected override void OnPaint(PaintEventArgs pe)
 {
     base.OnPaint(pe);
     if (Gradient != null)
     {
         pe.Graphics.InterpolationMode = InterpolationMode.NearestNeighbor;
         pe.Graphics.DrawImage(render, new Rectangle(0, 0, Width, Height * 2));
         for (int i = 0; i < gradient.PhotonPositionCount; i++)
         {
             PhotonGradient.PhotonPosition pp = gradient[i];
             int u = Numerics.Floor((pp.Position - gradient.Start) * Width / gradient.Length);
             linePen.Color = new Photon(1f - pp.Photon.R, 1f - pp.Photon.G, 1f - pp.Photon.B);
             pe.Graphics.DrawLine(linePen, new Point(u, 0), new Point(u, Height));
         }
     }
 }
Esempio n. 3
0
        private void gradientBox_MouseMove(object sender, MouseEventArgs e)
        {
            PhotonGradient gradient = gradientBox.Gradient;

            float u = (float)e.X / gradientBox.Width * gradient.Length + gradient.Start;
            int   i = gradient.ClosestIndex(u);

            if (e.Button == MouseButtons.Middle && i > 0 && i < gradient.PhotonPositionCount - 1)
            {
                PhotonGradient.PhotonPosition pp = gradient[i];
                if (ModifierKeys == Keys.Shift)
                {
                    pp.Position = (float)(int)(Math.Round(u * gradientRuler.Segments)) / gradientRuler.Segments;
                }
                else
                {
                    pp.Position = u;
                }
                gradient[i] = pp;
                gradientBox.UpdateRender();
            }
        }