У меня есть приложение для рисования, которое рисует много линий, многоугольников и т. Д. В контексте устройства.Я также рисую фоновые растровые изображения, которые поступают из внешнего источника и требуют много времени для загрузки.
При рисовании нового кадра я сначала запускаю потоки, которые загружают растровые изображения, затем рисую свои векторные данные, и наend хотел бы нарисовать загруженные растровые изображения при сохранении векторных данных.Мне нужны растровые изображения «под» векторными данными, но я не могу сначала нарисовать их, потому что они не загружены, и ожидание их загрузки сильно замедлит процесс.
Моя идея состояла в том, чтобы применитьТехника «Растровое изображение с прозрачностью»:
- Скопируйте часть контекста моего устройства, которая будет покрыта растровым изображением, в монохромное изображение, все объекты, нарисованные цветом фона, должны быть нарисованы, все остальное отключено.-limits.
- Скопировать изображение поверх растрового изображения (с соответствующим кодом ROP), чтобы отметить то, что должно быть прозрачным в растровом изображении
- StretchBlt измененного растрового изображения на контекст устройства
Растровое изображение необходимо преобразовать, чтобы оно соответствовало контексту моего устройства, поэтому я использую SetWorldTransform
, чтобы применить аффинное преобразование к контексту моего устройства.Преобразование имеет как вращение, так и сдвиг.
К сожалению, это не сработает на шаге 1, поскольку согласно документации StretchBlt
:
Еслипреобразование источника имеет вращение или сдвиг, возникает ошибка.
Теперь я попытался установить обратное преобразование на моем монохромном DC, которое преобразовало бы мои сдвинутые данные в правильный прямоугольник, но функцияпо-прежнему происходит сбой.
Поэтому я предполагаю, что мой вопрос заключается в следующем: как растровое изображение растрескивается без удаления моих данных (функция, в которой я даю прозрачный цвет в пункте назначения , а не source , было бы идеально), ИЛИ Есть ли простой способ извлечь данные о цвете из контекста устройства, в котором есть вращение и сдвиговое преобразование?