Как предотвратить «растягивание» представления direct2d при изменении размера окна?

Я отображаю текст с помощью ID2D1HwndRenderTarget.

Когда происходит изменение размера окна пользовательского интерфейса, я хочу предотвратить растяжение отображаемого текста, поэтому он будет неизменным, пока я не сделаю команду рендеринга напрямую.

В документации Direct2D поведение описано:

Если EndDraw представляет буфер, это растровое изображение растягивается, чтобы покрыть поверхность, на которой оно представлено: всю клиентскую область окна.

Я знаю ID2D1HwndRenderTarget::Resize метод, но я не хочу сразу обновлять размер, просто буду использовать его позже в соответствии с потребностями моей программы.

Как игнорировать события Windows, чтобы предотвратить это визуальное растяжение?


person google dev    schedule 20.02.2019    source источник


Ответы (1)


Вы уже игнорируете сообщения об изменении размера, и поэтому размер поверхности не соответствует размеру клиентской области при представлении. Вы можете попытаться компенсировать этот эффект, установив целевое разрешение в соответствии с фактором «клиентская область/текущий целевой размер» прямо перед выполнением EndDraw(). Я понятия не имею, поможет ли это или что произойдет с непокрытой областью окна за пределами текущего целевого прямоугольника.

person bunglehead    schedule 21.02.2019