Я работаю над программой, которая будет иметь много растровых изображений DIB (созданных CreateDIBSection
), и им придется рисовать много текста на них с помощью Win API.Насколько дешево/дорого стоит DC в Win API?
Чтобы рисовать на растровом изображении, Windows требует контекста устройства, созданного CreateCompatibleDC
.
И вот теперь два подхода:
Я могу создать постоянный ток один раз в растровое изображение, используя его для рисования и удалить его при освобождении растрового изображения.
Или я могу создать постоянный ток только тогда, когда мне нужно нарисовать растровое изображение, вызвать функции рисования и удалить DC.
Каков наилучший подход? Я предпочитаю первый, из-за меньшего количества звонков - это сделает мой код намного меньше, а также немного быстрее.
Но разве это не слишком дорого провести длинный живой DC для каждого растрового изображения?
Редактировать 1: Приложение на самом деле представляет собой библиотеку инструментов графического интерфейса пользователя, которая может использоваться в будущем и может быть непредсказуема в будущем, поэтому мне нужно хорошо сбалансированное решение с максимальной возможной производительностью и минимальным использованием системных ресурсов.
Распространенной практикой является вызов "' GetDC() '" (или GetDCEx()), рисовать, а затем "' ReleaseDC() '". – paulsm4
Мне не нужно рисовать на окне, поэтому GetDC не вариант. CreateCompatibleDC - это то, что нужно использовать. Это DC, который не связан с окном. – johnfound
@selbie Хм, может быть, вы имеете в виду №2? И я все еще не чувствую, что знаю ответ на вопрос. – johnfound