Вероятный Вы хотите к и , переопределение Равняется (возражают) и определяют, Равняется (MyType), потому что последний старается не упаковывать. И переопределите оператор равенства.
книга Инструкций по Платформе.NET (2-й редактор) имеет больше покрытия.
Я провел некоторое тестирование, и, похоже, ответ таков:
Параметр range
масштабирует значения компонентов a * и b *.
Кроме того, значения компонентов делают не кажутся обрезанными до указанного диапазона.
Итак, в следующем примере:
CGFloat range1[] = { -10, 10, -10, 10 };
CGFloat range2[] = { -100, 100, -100, 100 };
CGColorSpaceRef space1 = CGColorSpaceCreateLab(whitePoint, blackPoint, range1);
CGColorSpaceRef space2 = CGColorSpaceCreateLab(whitePoint, blackPoint, range2);
CGFloat components1[] = { 50, 10, 10, 1 };
CGColorRef color1 = CGColorCreate(space1, components1);
CGFloat components2[] = { 50, 100, 100, 1 };
CGColorRef color2 = CGColorCreate(space2, components2);
CGColorRef color3 = CGColorCreate(space1, components2);
color1
и color2
представляют один и тот же цвет. color3
отображается чтобы сохранить указанные значения компонентов, даже если они находятся вне диапазона, указанного цветовым пространством. Наконец, похоже, что спецификация диапазона {-127, 127, -127, 127} приводит к цветовому пространству с стандартные шкалы CIELAB для осей a * и b *.
Если у кого-то есть более авторитетный ответ, пожалуйста, напишите!