首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSGradient转换为NSColor

将NSGradient转换为NSColor
EN

Stack Overflow用户
提问于 2013-04-22 03:40:50
回答 2查看 1.1K关注 0票数 1

是否可以将NSGradient转换为NSColor?

代码语言:javascript
复制
- (void) viewWillDraw {
    NSGradient *grad = [[NSGradient alloc] initWithStartingColor:[NSColor lightGrayColor]    endingColor:[NSColor darkGrayColor]];
    [super setBackgroundColor:*gradient*;
}

这是我的方法,我想把NSGradient作为一个NSColor来传递,显然我不能,有没有办法把它转换成一个?

EN

回答 2

Stack Overflow用户

发布于 2013-04-22 07:57:13

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

  1. 一个可以任意绘制渐变的块。
  2. 以块为背景的图像。
  3. 将图像重复为图案的颜色。

这样,您就可以创建一个看起来像任何东西的颜色,包括渐变。

尽管如此,如果您试图使渐变适应背景的大小(通过使用传递给块的rect ),并且背景是滚动视图中的文本视图,则这可能无法在窗口调整大小。(当我试了一段时间后,这个模式没有重新绘制这个块;它只是平铺的,至少在一个维度上看起来很奇怪。)如果您的梯度或窗口的大小是固定的,那么您就不会有这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-04-22 06:07:04

NSGradient不能转换到NSColor.

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

由于您希望将viewBackground设置为效果(梯度效应),您需要这样做:

代码语言:javascript
复制
[grad drawInRect:<the rect of your view> angle:270]; //angle is upto your requirement,
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16139065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档