1

是否可以将 NSGradient 转换为 NSColor

- (void) viewWillDraw {
    NSGradient *grad = [[NSGradient alloc] initWithStartingColor:[NSColor lightGrayColor]    endingColor:[NSColor darkGrayColor]];
    [super setBackgroundColor:*gradient*;
}

这是我的方法,我希望能够将 NSGradient 作为 NSColor 传递,显然我不能,有没有办法将它转换为一个?

4

2 回答 2

1

在 10.8 上,您可以按以下顺序创建:

  1. 一个可以随心所欲地绘制渐变的块。
  2. 由块支持的图像。
  3. 将图像重复为图案的颜色。

通过这种方式,您可以创建一种看起来像任何东西的颜色,包括渐变。

也就是说,如果您尝试让渐变适应背景的大小(通过使用传递给块的矩形)并且背景是滚动视图中的文本视图,则这可能无法正确调整窗口大小。(当我不久前尝试它时,图案并没有重新绘制块;它只是平铺,至少在一个维度上看起来很奇怪。)如果你的渐变或窗口的大小是固定的,那么你就不会遇到这个问题.

于 2013-04-22T07:57:13.753 回答
0

NSGradient 不能转换为 NSColor。

NSGradient 类支持绘制渐变填充颜色,也称为 Quartz 中的阴影。此类为绘制矩形和 NSBezierPath 对象的径向或线性(轴向)渐变提供了方便的方法。

当您想将 viewBackground 设置为效果(渐变效果)时,您需要执行以下操作:

[grad drawInRect:<the rect of your view> angle:270]; //angle is upto your requirement,
于 2013-04-22T06:07:04.200 回答