Короткая версия:
Мне нужна функция C # для вставки в мой код, которая делает снимок экрана прямоугольника (x, y, w, l) экрана, используя DXGI (при условии, что на него ссылаются), потому что я считаю, что это будет лучше, чем Graphics.CopyFromScreen
.
Длинная версия:
Я пишу игровой макрос на C #, и он использует информацию с экрана, чтобы определить, что делать. В частности, он постоянно снимает скриншоты как Bitmap
с и выполняет кучу GetPixel
с. Прямо сейчас я использую Graphics.CopyFromScreen
для получения изображений, и это очень неудобно для меня, так как создание снимков всего экрана занимает слишком много времени, а работа с частичными снимками экрана - совсем другая задача (которую я сейчас выполняю, но я верю, что это можно сделать проще).
Я попытался сравнить CopyFromScreen
с неуправляемым BitBlt
, как с целым экраном, так и с небольшой его областью, и производительность примерно одинакова (я чувствую, что под капотом это одно и то же). Затем я узнал о SharpDX и манипуляциях с ним, связанных с ним. Есть много проектов, которые снимают видео с экрана, и несколько, которые делают скриншоты, но я не могу понять код достаточно, чтобы интегрировать его в мой проект. Я надеюсь, что кто-то может помочь.
В качестве примечания, приложение, которое я снимаю, использует OpenGL, если это помогает.