Trong Quartz 2D, các CGColorSpaceCreateLab()
hàm lấy một tham số range
quy định như sau:Quartz 2D: CGColorSpaceCreateLab: Mục đích của tham số phạm vi?
CGFloat khoảng [4]: Một mảng của 4 con số mà xác định phạm vi của các giá trị hợp lệ cho một * và b * các thành phần của không gian màu. Thành phần a * đại diện cho các giá trị chạy từ màu xanh lục sang màu đỏ và thành phần b * biểu diễn các giá trị chạy từ màu xanh sang màu vàng.
Câu hỏi là, thông số này thực sự là gì do?
Tôi có thể nghĩ đến ít nhất ba trường hợp có thể xảy ra.
Lựa chọn 1: Có lẽ nó quy mô các thành phần giá trị
Nói rằng tôi có hai không gian màu sắc với phạm vi khác nhau:
CGFloat range1[] = { -10, 10, -10, 10 };
CGFloat range2[] = { -100, 100, -100, 100 };
CGColorSpaceRef space1 = CGColorSpaceCreateLab(whitePoint, blackPoint, range1);
CGColorSpaceRef space2 = CGColorSpaceCreateLab(whitePoint, blackPoint, range2);
tôi tạo ra màu sắc với các giá trị thành phần tương tự và trong phạm vi nhất định mỗi không gian:
CGFloat components[] = { 50, 10, 10, 1 };
CGColorRef color1 = CGColorCreate(space1, components);
CGColorRef color2 = CGColorCreate(space2, components);
Do color1
và color2
đại diện t anh ấy cùng màu? Hoặc tham số range
có thể mở rộng các thành phần theo một cách nào đó, làm cho hai màu này khác nhau không? (Nếu sau này, những gì giá trị cho range
tương ứng với tiêu chuẩn CIELAB phối rộng Lựa chọn 2
: Có lẽ nó clip thành phần giá trị
Với hai không gian được định nghĩa ở trên, nói rằng tôi tạo ra các màu sắc sau để thay thế :
CGFloat components[] = { 50, 50, 50, 1 };
CGColorRef color1 = CGColorCreate(space1, components);
CGColorRef color2 = CGColorCreate(space2, components);
Bây giờ làm color1
và color2
đại diện cùng màu Hoặc không tham số range
cắt các thành phần của color1
để {50? , 10, 10, 1}? (Nếu sau này, điểm là gì? Một xấp xỉ gần đúng của định nghĩa gam màu? Đảm bảo giá trị nằm trong phạm vi tương thích với một kiểu dữ liệu khác?)
Tùy chọn 3: Có thể nó được sử dụng ở nơi khác, như khi thực hiện ánh xạ gam màu với ý định hiển thị nhận thức
Có ý tưởng về phạm vi giá trị L * a * b * để mong đợi có thể hỗ trợ ánh xạ gam, đặc biệt trong trường hợp cảm nhận, nhưng một lần nữa, điều này có vẻ giống như một xấp xỉ thô không thấy lý do tại sao nó sẽ đặc biệt hữu ích.
Tùy chọn 4: Cái gì khác?