0

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

情况是这样的

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

我只有一个 NSView。

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

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

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

现在我希望该用户可以用 1 根手指在此图像上绘图。

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

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

非常感谢,塞尔吉奥


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

请尝试理解这个上下文

MainWindow 自然是 root

NSViewController 调用 MainViewController 自定义 NSView 作为根视图 - 这个视图被称为 Container 并且它被设置为 MainWindow 的 contentView

CALayer 称为 Images_Layer - 它是作为容器层的子层添加的层

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

当我单击图像 (ImgLayer) 时,会像往常一样触发 3 种方法:

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

4

1 回答 1

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];

}

于 2013-07-26T12:09:23.417 回答