Получение дисплеев

Если Вы пишете иммерсивное приложение, такое как игра или программа представления, можно хотеть сделать полноэкранное получение.

Общий подход должен получить дисплей, который Вы хотите использовать. При получении дисплея у Вас есть монопольное использование дисплея. Другим приложениям и системным службам не позволяют использовать дисплей или изменить его конфигурацию. Кроме того, они не уведомляются относительно изменений дисплея, таким образом препятствуя тому, чтобы они меняли местоположение их окон и Средства поиска от того, чтобы менять местоположение значков на рабочем столе.

Для получения единственного дисплея вызовите функцию CGDisplayCapture. Для получения всех онлайновых дисплеев сразу вызвать CGCaptureAllDisplays. По умолчанию полученный экран заполнен черным цветом; у Вас есть опция отключения этой опции при получении использования функций CGDisplayCaptureWithOptions или CGCaptureAllDisplaysWithOptions.

После получения дисплея существует несколько опций получения:

Когда Вы закончены с помощью полученного дисплея, необходимо выпустить его путем вызова CGDisplayRelease или CGReleaseAllDisplays.

Перечисление 1 показывает, как получить основной дисплей и нарисовать текстовую строку с помощью 2D Кварца. Подробное объяснение каждой пронумерованной строки кода появляется после перечисления.

Перечисление 1  Получая основной дисплей

char *text = "Hello, World!";
CGDirectDisplayID display = kCGDirectMainDisplay; // 1
CGError err = CGDisplayCapture (display); // 2
if (err == kCGErrorSuccess)
{
    CGContextRef ctx = CGDisplayGetDrawingContext (display); // 3
    if (ctx != NULL)
    {
        CGContextSelectFont (ctx, "Times-Roman", 48, kCGEncodingMacRoman);
        CGContextSetTextDrawingMode (ctx, kCGTextFillStroke);
        CGContextSetRGBFillColor (ctx, 1, 1, 1, 0.75);
        CGContextSetRGBStrokeColor (ctx, 1, 1, 1, 0.75);
        CGContextShowTextAtPoint (ctx, 40, 40, text, strlen(text)); // 4
        sleep (4); // 5
    }
    CGDisplayRelease (display); // 6
}

Вот то, что делает код:

  1. Получает дисплей ID основного дисплея.

  2. Получает основной дисплей и изменяет цвет на черный цвет. Ошибка возвращается, только если дисплей был получен другим приложением.

  3. Получает Кварцевый контекст графики, связанный с полученным дисплеем.

  4. Рисует текстовую строку в нижнем левом углу экрана.

  5. Приостанавливает обработку в течение нескольких секунд, чтобы позволить пользователю читать текст.

  6. Выпускает полученный дисплей.