gpt4 book ai didi

iOS Objective-C 如何绘制只有 'warm colors' 的色轮?

转载 作者:行者123 更新时间:2023-11-28 21:41:07 25 4
gpt4 key购买 nike

我有一个像这样的色轮: https://stackoverflow.com/a/16735555/5226245

现在我试图只绘制“暖色”,并只用这些颜色替换整个轮子。例如:我想要颜色从 45° 到 60°,并且只显示轮子中的颜色。

有什么想法吗?

最佳答案

由于您将帖子与示例代码相关联,我对其进行了一些修改,使其符合您可能想要执行的操作。

主要思想是,当您使用 UIBezierPath 绘制轮子时,您必须提供您想要在屏幕上绘制的颜色。如果您查看您提供的链接中的代码 (https://stackoverflow.com/a/16735555/5226245),您将在 viewDidLoad 方法中看到以下代码行:

// ...
// You create a color and then use it to color a small part of the wheel
UIColor *color = [UIColor colorWithHue:((float)i)/sectors saturation:1. brightness:1. alpha:1];
[color setFill];
// ...

这是您要调整方法的地方。所以您所要做的就是 就是提供您自己的颜色!简而言之,您必须提供“足够”的颜色(不是 10-20,而是像链接中那样 >100 或 180),否则色轮的渐变将不平滑。

为此,您只需更改一行代码。

    // replace
// UIColor *color = [UIColor colorWithHue:((float)i)/sectors saturation:1. brightness:1. alpha:1];
// with something like
UIColor *color = [self provideWarmColorSliceForSlice:( i ) slicesCount:(sectors)];
// the variable is then automatically handled further in the sample.

provideWarmColorSliceForSlice:slicesCount: 方法可以定义如下:

- (UIColor *)provideWarmColorSliceForSlice:(NSInteger)sliceNo slicesCount:(NSInteger)totalSlices {
// I want to cover the interval [200; 255] U [0; 40] which contains the warmest colors
int warmHueStart = 200;
int warmHueEnd = 40;
// If you want the standard color wheel, just use
// warmHueStart=254; warmHueEnd = 253; // interval [254; 255] U [0; 253]

// code to compute the hue
int l = (255-warmHueStart) + warmHueEnd;
float inputRatio = ((float)sliceNo)/totalSlices;
float targetedHue = (float) ((warmHueStart + ((int)(inputRatio * l)) ) % 255);
float hue = targetedHue / 255.0f;

return [UIColor colorWithHue:hue saturation:1.0f brightness:1.0f alpha:1.0f];
}

瞧!仅此而已,但更多的代码重用会让你很高兴(好吧,如果答案没有迟到:j)

关于iOS Objective-C 如何绘制只有 'warm colors' 的色轮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32006372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com