Tôi đang cố gắng trích xuất các thành phần rgb của UIColor
để vẽ tay các pixel trong một CGBitmapContext
. Mã mẫu sau hoạt động tốt cho hầu hết các hằng số UIColor
nhưng, gây nhầm lẫn, không phải tất cả. Để wit:Kết quả bất thường nhận được các thành phần màu của một số UIColors
CGColorRef color = [[UIColor yellowColor] CGColor];
const float* rgba = CGColorGetComponents(color);
float r = rgba[0];
float g = rgba[1];
float b = rgba[2];
float a = rgba[3];
NSLog(@"r=%f g=%f b=%f a=%f", r, g, b, a);
Kết quả cho [UIColor yellowColor]
trên là
r = 1,000000 g = 1,000000 b = 0,000000 a = 1,000000, như mong đợi.
[UIColor redColor]
cung cấp cho r = 1,000000 g = 0,000000 b = 0,000000 a = 1,000000, lại như mong đợi. Tương tự cho blueColor
và greenColor
.
Tuy nhiên, kết quả cho [UIColor blackColor]
và [UIColor whiteColor]
có vẻ hoàn toàn bất thường và tôi không biết mình đang làm gì sai (nếu thực sự là tôi).
Vì chưng [UIColor blackColor]
cho r = 0,000000 g = 1,000000 b = 0,000000 a = 0,000000, mà là một tranparent xanh,
và [UIColor whiteColor]
cho r = 1,000000 g = 1,000000 b = 0,000000 a = 0,000000 , là màu vàng trong suốt.
Tôi đánh giá cao nó nếu ai đó có thể một trong hai:
(1) giải thích những gì tôi đang làm sai
(2) sao chép kết quả bất thường của tôi và cho tôi biết nó không phải là tôi, hoặc
(3) đánh vào đầu tôi bằng một cái búa lớn để nó ngừng đập quá nhiều.
Howard
Tuyệt vời! Cảm ơn bạn. Trước đây tôi đã bị nhầm lẫn bởi tham chiếu thường xuyên tới 'CGColorGetNumberOfComponents (color)' trước khi gọi 'CGColorGetComponents (color)'. Bây giờ tôi hiểu tại sao. Nhân tiện, không phải là cách in ra * tên * của mô hình ở trên, và không chỉ là giá trị của nó? – hkatz
Trình gỡ lỗi sẽ hiển thị cho bạn tên, tôi không chắc chắn bạn có thể in nó, vì đó là định nghĩa của một số. – pgb