Exemple #1
0
 private void ShiftBrightness(float brightness)
 {
     if (selectedFileName.Length > 0)
     {
         for (int i = 0; i < actualBitmap.Width; i++)
         {
             for (int j = 0; j < actualBitmap.Height; j++)
             {
                 var pix    = actualBitmap.GetPixel(i, j);
                 var bright = pix.GetBrightness();
                 if (bright + brightness < 1 && bright + brightness > 0)
                 {
                     var respix = ColorRGB.FromHSLA(pix.GetHue(), pix.GetSaturation(), bright + brightness, pix.A);
                     actualBitmap.SetPixel(i, j, respix);
                 }
             }
         }
     }
 }
Exemple #2
0
        // Given H,S,L,A in range of 0-1
        // Returns a Color (RGB struct) in range of 0-255
        public static ColorRGB FromHSLA(double H, double S, double L, double A)
        {
            double v;
            double r, g, b;

            if (A > 1.0)
            {
                A = 1.0;
            }

            r = L;               // default to gray
            g = L;
            b = L;
            v = (L <= 0.5) ? (L * (1.0 + S)) : (L + S - L * S);

            if (v > 0)
            {
                double m;
                double sv;
                int    sextant;
                double fract, vsf, mid1, mid2;

                m       = L + L - v;
                sv      = (v - m) / v;
                H      *= 6.0;
                sextant = (int)H;
                fract   = H - sextant;
                vsf     = v * sv * fract;
                mid1    = m + vsf;
                mid2    = v - vsf;

                switch (sextant)
                {
                case 0:
                    r = v;
                    g = mid1;
                    b = m;
                    break;

                case 1:
                    r = mid2;
                    g = v;
                    b = m;
                    break;

                case 2:
                    r = m;
                    g = v;
                    b = mid1;
                    break;

                case 3:
                    r = m;
                    g = mid2;
                    b = v;
                    break;

                case 4:
                    r = mid1;
                    g = m;
                    b = v;
                    break;

                case 5:
                    r = v;
                    g = m;
                    b = mid2;
                    break;
                }
            }

            ColorRGB rgb = new ColorRGB
            {
                R = Convert.ToByte(r * 255.0f),
                G = Convert.ToByte(g * 255.0f),
                B = Convert.ToByte(b * 255.0f),
                A = Convert.ToByte(A * 255.0f)
            };

            return(rgb);
        }