在OSx中的CALayer上绘制线条

时间:2013-07-24 09:26:53

标签: objective-c macos drawing calayer paint

我想知道你是否可以帮助我在图层上进行绘画。

情况就是这个

我在这种屏幕http://multitouch.com上进行编程,同时进行了12次触摸。 在我正在开发的应用程序中,我可以管理多个图像。我可以旋转,同时缩放所有图像的移动(屏幕上最多12次触摸!) 为了实现这一点,我只使用层来表演。 每个图像都由CALayer表示,然后我创建我的CALayer并将图像设置为其“内容”。层次结构就是这个。

我只有一个NSView。

  • NSView“Container_View”
  • CALayer“Images_Layer”作为“Container_View”图层的子图层(它们具有相同的框架)
  • CALayer“Img_1_Layer”,CALayer“Img_2_Layer”,CALayer“Img_3_Layer”等作为“Images_Layer”的子图层

正如我之前告诉过你的那样,我可以旋转,缩放和移动我的图像。

双击单张图片,我锁定整个屏幕,我仍然可以旋转并移动图像,但只能用两根手指。

现在我希望用户可以用1个手指在这张图片上绘图。

主要问题是我没有使用图形的经验,互联网上的所有示例都是关于绘制视线的。

问题是如何用手指在CALayer上画画。我只有CALayer,我不能拥有NSView

提前许多人,塞尔吉奥


Hi Mazyod,提供Image的CALayer类非常大。

请尝试了解此背景

MainWindow自然是

NSViewController以自定义NSView作为根视图调用MainViewController - 此视图称为Container,它被设置为MainWindow的contentView

CALayer调用Images_Layer - 它是一个添加为Container层的SubLayer的图层

CALayer调用Img_Layer - 它是一个添加为Images_Layer的SubLayer的图层(我为每个图像添加了一个,自然地设置为内容,然后是CGImageRef)

当我点击图像(ImgLayer)时,会照常激发3种方法:

onTouchPointDown - 使用x,y等 onTouchPointMove - 使用x,y等 onTouchPointUp - 使用x,y等

1 个答案:

答案 0 :(得分:1)

好的,我找到了。

  • 设置图层的委托
  • 在委托
  • 中覆盖此方法
  • 在您需要时调用图层setNeedDisplay方法

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

{

NSGraphicsContext *gc = [NSGraphicsContext graphicsContextWithGraphicsPort:ctx flipped:NO];
[NSGraphicsContext saveGraphicsState];

[NSGraphicsContext setCurrentContext:gc];

// draw points with bezier path

[NSGraphicsContext restoreGraphicsState];

}