ColorSpace.ColorVector.ConvertXyyToLinearSRgb C# (CSharp) Method

ConvertXyyToLinearSRgb() public method

public ConvertXyyToLinearSRgb ( ) : void
return void
        public void ConvertXyyToLinearSRgb()
        {
            // TODO: Check this.
            if (Component3 == 0.0)
            {
                Component1 = 0.0;
                Component2 = 0.0;
            }

            const double f11 = 330000.0 / 88229.0;
            const double f12 = -275000.0 / 264687.0;
            const double f13 = -44000.0 / 88229.0;
            const double f21 = -12500.0 / 12367.0;
            const double f22 = 612500.0 / 333909.0;
            const double f23 = 4625.0 / 111303.0;
            const double f31 = -30000.0 / 29963.0;
            const double f32 = -340000.0 / 269667.0;
            const double f33 = 5000.0 / 4731.0;
            double x = Component1;
            double y = Component2;
            double bigY = Component3;
            double scale = bigY / y;

            Component1 = (f11 * x + f12 * y + f13) * scale;
            Component2 = (f21 * x + f22 * y + f23) * scale;
            Component3 = (f31 * x + f32 * y + f33) * scale;
        }

Usage Example

示例#1
0
文件: Program.cs 项目: EFanZh/EFanZh
        private static void GenerateXyyColors(Bitmap bitmap, double bigY)
        {
            double width = bitmap.Width - 1;
            double height = bitmap.Width - 1;

            for (int y = 0; y < bitmap.Height; y++)
            {
                for (int x = 0; x <= y; x++)
                {
                    double cx = (x + 0.5) / width;
                    double cy = 1.0 - (y + 0.5) / height;

                    ColorVector colorVector = new ColorVector()
                    {
                        Component1 = cx,
                        Component2 = cy,
                        Component3 = bigY
                    };

                    colorVector.ConvertXyyToLinearSRgb();

                    if (colorVector.IsCanonical())
                    {
                        colorVector.ConvertLinearSRgbToSRgb();

                        bitmap.SetPixel(x, y, colorVector.ToColor());
                    }
                }
            }
        }
All Usage Examples Of ColorSpace.ColorVector::ConvertXyyToLinearSRgb