2010-04-30 5 views
2

주 디스플레이의 일부를 새 창으로 미러링 할 수있는 프로그램을 작성하고 싶습니다. 이상적으로이 새 창은 외부 모니터에 표시 될 수 있습니다. PC (다기능 디스플레이 추출기)에서이 작업을 수행하는 flightim에 대해 이러한 유익을 보았습니다.화면의 일부분을 외부 디스플레이 (OSX)로 미러링

CLick here for a screenshot of the program (MFD Extractor)

이 라이브 창, 즉 것이다. 업데이트 된 비디오 디스플레이는 정적 그래픽뿐만 아니라 지속적으로 업데이트됩니다.

나는 스크린 돋보기 또는 vnc 클라이언트에서 아이디어를 찾았지만 처음부터 무언가를 써야한다고 생각합니다. osx 프로그래밍에 대한 독서를 시도했지만 디스플레이에 대한 액세스를 어디서부터 시작해야합니까? 필자는 어떻게 든 특정 프로그램에서 그래픽을 추출해야합니다. 최종 출력 단계 (디스플레이로 보내지는 개별 픽셀) 또는 창 관리 단계에 가까운 곳으로가 보는 것이 가장 좋습니다.

모든 아이디어 나 조언을 주시면 감사하겠습니다. 나는 어딘가에서 시작할 필요가있다. 이 작업을 수행 할 수있는 몇 가지 방법이 있습니다

+0

우리는 Windows를 사용하지 않기 때문에 대부분이 프로그램을 실행할 수 없습니다. 설명이나 스크린 샷에 연결하는 것이 더 유용 할 것입니다. –

답변

0

감사합니다 :

  1. Quartz Display Services 당신은 화면의 비디오 메모리에 액세스 할 수있게된다.
  2. Quartz Window Services (a.k.a. CGWindow)를 사용하면 창 아래에있는 모든 이미지를 만들 수 있습니다. borderless, transparent, 비어있는 높은 level 창이 프레임 screen 전체를 차지하는 창을 만들면 그 아래의 모든 내용이 해당 화면의 모든 것입니다. (물론 화면의 일부를 복사하기 위해 더 작은 창을 만들 수 있습니다.)
  3. OpenGL을 사용하여 내가 완전히 이해하지 못했던 방법이 있습니다. 이 기술은 두 코드 샘플, OpenGLScreenSnapshotOpenGLCaptureToMovie으로 증명됩니다. CGWindow는 다소 쓸모가 없습니다.

각 이미지는 사용자가 파일을 표시하거나 쓸 수있는 이미지를 제공합니다.

이미지를 표시하려면 NSImageView 또는 IKImageView을 사용하십시오. 그것을 확대하고 싶다면 IKImageView는 zoomFactor 속성을 가지고 있지만 Pixie, DigitalColor Meter 또는 xScope과 같은 가장 가까운 이웃 배율을 원한다면 사용자 정의보기를 작성해야한다고 생각합니다 (그러나 isn '그 모든 하드).

+0

제안 해 주셔서 감사합니다. Quartz Window Services와 NSImageView의 CGWindowListCreateImageFromArray와 같은 메소드를 사용하여 정적 이미지와 달리 라이브 비디오 미러링 디스플레이를 만들 수 있습니까? 폴링 또는 새로 고침 빈도에 따라 타이밍이나 화면 업데이트 인터럽트 속도가 달라질 수 있습니다. 또는 이것이 내 의도 인 경우 다른 경로 나 대체 기능을 사용해야합니까? 감사합니다. – Adam

+0

아담 : 예, 그렇습니다. –

관련 문제