2011-03-31 3 views
0

사용자 상호 작용에 따라보기에 일련의 선을 그려 넣으려고합니다. 예를 들어, 사용자가 버튼을 누르면 한 줄이 그려집니다. 사용자가 다른 버튼을 누르고 다른 선이 그려지지만 첫 번째 선은 여전히 ​​그곳에 있습니다. 그것은 사소한 일처럼 보입니다. 그러나 제가 읽고있는 것에서 비파괴적인 그림은 그리 간단하지 않습니다. 누군가가 올바른 방향으로, 이상적으로는 몇 가지 샘플 코드로 나를 인도 할 수 있습니까? 물론 어떤 종류의지도도 정말로 높이 평가됩니다. 문자 그대로 여러 가지 직선을 뷰에 계속 그려야합니다. 어떤 도움을 주셔서 미리 감사드립니다!iOS 순차 그리기 지우기없이 이전에 그려진

+0

주제가 여기에서 논의 된 것처럼 보입니다. [link] (http://stackoverflow.com/questions/865636/uiview-how-to-do-non-destructive-drawing)하지만 솔직히 말하면 이해할 수 없습니다. 솔루션 코드. 나는 새로운 그림이 기존의 이미지보다 어디서 끝나는지를 보지 못했다. –

답변

1

석영 코어를 사용하려면 매번 다시 그려야 할 것이라고 생각합니다. 누군가가 선을 추가하고, 선을 그리고, 다른 선을 추가하고, 두 선을 추가합니다. on ...하지만 레이어 위에 그려서 서로 위에 계속 추가 할 수 있습니다.

+0

흠, 고마워요. 나는 모든 것을 다시 그릴 필요가없는 방법을 찾고 있습니다. 주어진 시간에 뷰에 백만 줄이있을 수 있으며 각 사용자 상호 작용 후 40-50 개만 그려집니다. 나는 시도하지 않았지만 백만 라인이 순간적이지 않다고 추측하고 있으며 실제로 사용자 경험을 엉망으로 만들 것입니다. –

+0

그럼 레이어 위에 레이어를 추가하거나 OpenGL을 사용할 수 있습니다. – Daniel

+0

1000 레이어는 너무 빠르지 않을 것입니다. 그리고 초보자로서 OpenGL을 피하려고 노력하고 있습니다.하지만 어쩌면 그렇게 할 수 있습니다. 끝내기 위해서. –

1

실행 취소 기능이 필요하지 않은 경우 그림을 CGBitmapContext으로 그려서 이미지를 만듭니다. 필요한 경우 화면에 으로 렌더링하십시오. 이것은 "back buffering"(또는 "double buffering"또는 그냥 "buffered drawing")이라고하며 매우 일반적입니다.

+0

필자는 실행 취소 기능이 필요하다고 생각하지 않습니다. 나는 지금 줄을 지울 필요가있다.하지만 그 위에 배경색의 선을 그려야했다. 나는 당신이 말하는 것에 대한 예를 찾아 보았고, 좋은 것을 찾는데 어려움을 겪었다. (나는 OpenGL을 계속 사용했다. 나는 초보자로서 피하려고 노력하고있다.) drawRect를 시작할 때 어떻게 든 현재 이미지를 가져 와서이 CGBitmapContext에 복사하고, 더 많은 내용을 그려 화면에 복사합니다. 이 샘플을 어디에서 보셨습니까? 나를 미치게 부르지 만, 내가 성취하려고하는 사소한 일처럼 보입니다. 감사 –