2012-03-13 3 views
4

Я пытаюсь использовать SetPixelV для окон, чтобы отображать изображение непосредственно на экране, так как я уверен, что вы знаете, что это невыносимо медленно и слишком медленно для того, что я wan't использовать его для. Может ли кто-нибудь указать мне в правильном направлении, как показывать прямо на экран (не в окне), что быстрее SetPixelV? (Не требуется независимая от платформы)Ускоренный способ изменить пиксели, чем SetPixel()

+0

Вам всегда нужно рисовать в окно - сам рабочий стол - это окно. –

+0

Прочитайте [эту статью] (http://msdn.microsoft.com/en-us/library/dd183562%28v=vs.85%29.aspx) в MSDN (особенно в последнем абзаце). –

+0

@MarkRansom: Это странный способ взглянуть на него. Существует дескриптор окна, который представляет рабочий стол, но это не мешает вам рисовать «прямо» на «экране». Вы можете получить контекст устройства на экране или устройстве отображения и напрямую использовать его с помощью функций контекста устройства, включая «BitBlt()». –

ответ

2

Вы можете позвонить по телефону BitBlt. Это предполагает, что у вас уже есть весь образ - он не устанавливает отдельные пиксели (если только вы не нажмете кучу однопиксельных изображений, но тогда вы, вероятно, находитесь в худшем положении, чем там, где вы начали, по скорости).

4

Вы можете создать свое изображение в памяти и использовать SetDIBitsToDevice, чтобы скопировать его.