2013-07-24 5 views
0

레이어에 그림을 그릴 수 있는지 알고 싶습니다.OSx에서 CALayer에 선 그리기

상황은 내가 http://multitouch.com, 12 터치 동시에 화면의 종류에 프로그래밍하고이

입니다. 개발중인 앱에서 여러 이미지를 관리 할 수 ​​있습니다. 나는 회전 할 수 있고, 동시에 모든 이미지를 움직일 수있다. (화면에 최대 12 개의 터치!) 나는 이것을 수행하기 위해서 오직 공연을 위해서만 레이어를 사용한다. 모든 이미지는 CALayer로 표현됩니다. 그런 다음 CALayer 's를 만들고 이미지를 '내용'으로 설정합니다. 계층 구조가 이것입니다.

저는 NSView 만 있습니다.

  • NSView의 "Container_View"는 "Container_View"층의 하층으로서
  • 의 CALayer "Images_Layer"(이 동일한 구조를 가지고)
  • 의 CALayer "Img_1_Layer"의 CALayer "Img_2_Layer"의 CALayer "Img_3_Layer" 등 "Images_Layer"하위 레이어로

이전에 말한 것처럼 이미지를 회전하고 크기를 조정하고 이동할 수 있습니다.

단일 이미지를 두 번 탭하면 전체 화면을 잠글 수 있습니다. 이미지를 두 번만 회전하고 움직일 수는 있습니다.

이제이 사용자가이 이미지에서 1 손가락으로 그릴 수있게하겠습니다.

주된 문제는 그래픽으로 경험하지 못했고 인터넷의 모든 예가 화면에 선을 그어야한다는 것입니다.

질문은 CALayer에 손가락으로 그리는 방법입니다. 난 단지의 CALayer을 가지고, 나는


안녕 Mazyod, 이미지를 제공는 CALayer 클래스는 매우 큰 사전에 세르지오

를 NSView의

많은 thantk을 가질 수 없습니다.

이 상황을 루트로

MainWindow를을 이해하려고 노력하십시오 자연스럽게

NSViewController 루트 뷰와 사용자 정의 NSView의와 MainViewController라고 -이보기는 컨테이너이라고하며이 MainWindow를

의있는 contentView로 설정되어 CALayer는 Images_Layer라고 불렀습니다. 컨테이너 레이어의 하위 레이어로 추가 된 레이어입니다.

CALayer는 Img_Layer라고 불렀습니다. ImagesLayer의 하위 레이어로 추가 된 레이어입니다. 각 이미지에 대해이 중 하나를 집결지 내용 자연적으로, 다음 CGImageRef) 나는 이미지 (ImgLayer)을 클릭하면

, 3 방법은 평소와 같이 해고로 설정 :

onTouchPointDown - X와, Y 등 onTouchPointMove - x, y 등 onTouchPointUp - x, y 등

+0

관심사가 OS X에 있습니다. 그런 다음 손가락으로 그림이나 줄을 그리는 것에 대해 이야기하고 있습니까? 이미지를 가볍게 두드리는 것? 당신이하는 말은 나에게 의미가 없습니다. –

+0

영어로 불편을 끼쳐 드려 죄송합니다. 내 앱이 어떻게 작동하는지 설명하고 싶었습니다. 네, 이미지를 '내용'으로 포함하고있는 CALayer에 1 손가락으로 그리기를 원합니다. 의 내가 3 방법으로 내 CustomLayerImage을한다고 가정 해 봅시다 : TouchBegan 하는 TouchMove TouchEnd –

+0

내가 제안 당신은 당신이 지금까지 가지고있는 코드의 일부를 보여, 그래서 우리는 거기에서 시작할 수 있습니다. 참고로'CALayer'를 그리는 것은 뷰를 그리는 것과 정확히 같습니다. 단 하나의 차이점이 있습니다 : drawRect :를 사용하는 대신 DrawInContext :를 사용합니다. – Mazyod

답변

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]; 
,691을 필요로 할 때

}