【问题标题】:OS X/Cocoa: Drawing on NSView inside transparent windowOS X/Cocoa:在透明窗口内的 NSView 上绘图
【发布时间】:2017-01-28 14:02:17
【问题描述】:

我正在尝试使用如下代码在 NSView 内绘制简单的矩形:

    self.shapeLayer = [CAShapeLayer layer];
    self.shapeLayer.lineWidth = 2.0;
    self.shapeLayer.strokeColor = [[NSColor whiteColor] CGColor];
    self.shapeLayer.fillColor = [[NSColor blackColor] CGColor];
   [self.layer addSublayer:self.shapeLayer];
   CGMutablePathRef path = CGPathCreateMutable();
   CGPathMoveToPoint(path, NULL, 400, 400);
   CGPathAddLineToPoint(path, NULL, 400, 600);
   CGPathAddLineToPoint(path, NULL, 600, 600);
   CGPathAddLineToPoint(path, NULL, 600, 400);
   CGPathCloseSubpath(path);

   // set the shape layer's path
   self.shapeLayer.path = path;

我也尝试在NSView drawRect: 中绘制一些东西。

在这两种情况下,矩形都会被绘制,但它不在笔触/填充颜色集中,而是在一些半透明版本中,如 alpha 0.5 !

我试图在放置在 NSWindow 内的 NSView 上绘制这个 Rectangle,它的 backgroundColor 设置为 clearColor 并且 opaque 设置为 NO。 然后我认为可能与这种透明度相关联,所以我将背景颜色更改为 greenColor 并将不透明更改为 YES。而且我仍然用半透明而不是生动的纯色绘制矩形。 我做错了什么?

【问题讨论】:

    标签: objective-c macos cocoa


    【解决方案1】:

    好的,我发现了问题。添加了一些额外的核心动画层,我想到了我之前创建然后删除的视图。 然后在 Interface Builder 中仍然选择了这个附加的动画层,所以我像下图一样取消选择它,现在它可以正常工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 2014-03-13
      • 2010-09-13
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多