首页 文章

在OSx中的CALayer上绘制线条

提问于
浏览
0

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

情况就是这样

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

我只有一个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

很多人提前,塞尔吉奥


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

请尝试了解这一背景

MainWindow自然为root

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 回答

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

    }

相关问题