Tôi đang cố gắng làm mờ một số UIColor
thành một số khác trong một số drawRect
. Tôi đã tạo chức năng này để tính toán màu theo một tỷ lệ nhất định:Màu theo cách thủ công mờ dần từ một màu UIC này sang màu khác
- (UIColor *)colorFromColor:(UIColor *)fromColor toColor:(UIColor *)toColor percent:(float)percent
{
float dec = percent/100.f;
CGFloat fRed, fBlue, fGreen, fAlpha;
CGFloat tRed, tBlue, tGreen, tAlpha;
CGFloat red, green, blue, alpha;
if(CGColorGetNumberOfComponents(fromColor.CGColor) == 2) {
[fromColor getWhite:&fRed alpha:&fAlpha];
fGreen = fRed;
fBlue = fRed;
}
else {
[fromColor getRed:&fRed green:&fGreen blue:&fBlue alpha:&fAlpha];
}
if(CGColorGetNumberOfComponents(toColor.CGColor) == 2) {
[toColor getWhite:&tRed alpha:&tAlpha];
tGreen = tRed;
tBlue = tRed;
}
else {
[toColor getRed:&tRed green:&tGreen blue:&tBlue alpha:&tAlpha];
}
red = (dec * (tRed - fRed)) + fRed;
blue = (dec * (tGreen - fGreen)) + fGreen;
green = (dec * (tBlue - fBlue)) + fBlue;
alpha = (dec * (tAlpha - fAlpha)) + fAlpha;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
Giá trị này cần mỗi giá trị R/G/B/A và tăng tùy theo tỷ lệ phần trăm.
Loại tác phẩm này, nhưng không phai nhạt [UIColor purpleColor]
đến [UIColor redColor]
chính xác. Tại 0,1 phần trăm nó xuất hiện như một màu xanh lá cây chứ không phải là màu tím, do đó, nó xuất hiện mờ dần từ màu xanh sang màu đỏ thay vì màu tím sang màu đỏ.
Bất kỳ ai biết tôi đang làm gì sai? Đây có phải là cách tiếp cận sai để tính toán điều này? Có cách nào chính xác hơn để thực hiện việc này không?
Ôi! Vì vậy, nhiều màu đỏ, xanh lá cây, và xanh ... Tôi nghĩ rằng tôi đã có tất cả thẳng! Cảm ơn! – Luke
Không sao cả. Đôi khi bạn chỉ cần một cặp mắt bổ sung. –