Поделиться через


перечисление DVASPECT2 (ocidl.h)

Задает новые аспекты рисования, используемые для оптимизации процесса рисования.

Синтаксис

typedef enum tagDVASPECT2 {
  DVASPECT_OPAQUE = 16,
  DVASPECT_TRANSPARENT = 32
} DVASPECT2;

Константы

 
DVASPECT_OPAQUE
Значение: 16
Представляет непрозрачные, легко обрезки части объекта. Объекты могут поддерживать или не поддерживать этот аспект.
DVASPECT_TRANSPARENT
Значение: 32
Представляет прозрачные или нерегулярные части объекта , как правило, части, которые дорого или невозможно вырезать. Объекты могут поддерживать или не поддерживать этот аспект.

Комментарии

Для поддержки оптимизации рисования для уменьшения мерцания объект должен иметь возможность рисовать и возвращать сведения о трех отдельных аспектах самого себя.

Аспект Описание
DVASPECT_CONTENT Задает все содержимое объекта . Все объекты должны поддерживать этот аспект.
DVASPECT_OPAQUE Представляет непрозрачные, легко обрезки части объекта. Объекты могут поддерживать или не поддерживать этот аспект.
DVASPECT_TRANSPARENT Представляет прозрачные или нерегулярные части объекта , как правило, части, которые дорого или невозможно вырезать. Объекты могут поддерживать или не поддерживать этот аспект.
 

Контейнер может определить, какие из этих аспектов рисования поддерживает объект, вызвав новый метод IViewObjectEx::GetViewStatus. Отдельные биты возвращают сведения о поддерживаемых аспектах. Если объект не поддерживает интерфейс IViewObjectEx , предполагается, что он поддерживает только DVASPECT_CONTENT.

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

  • Объекты, поддерживающие только DVASPECT_CONTENT, должны быть отрисованы во время передачи сзади к переднему краю, при этом все непрозрачные части любого перекрывающегося объекта обрезаются. Так как все объекты должны поддерживать этот аспект, контейнер, не беспокоятся о мерцаниях ( возможно, потому, что он рисует на растровом рисунке вне экрана), может выбрать рисование всех объектов таким образом и пропустить переход от переднего к заднему.
  • Объектам, поддерживающим DVASPECT_OPAQUE, может быть предложено нарисовать этот аспект во время передачи от переднего к заднему. Контейнер отвечает за вырезку непрозрачных областей объекта перед закрашиванием других объектов за ним.
  • Объектам, поддерживающим DVASPECT_TRANSPARENT, может быть предложено нарисовать этот аспект во время передачи сзади к переднему. Контейнер отвечает за вырезку непрозрачных частей перекрывающихся объектов, прежде чем позволить объекту нарисовать этот аспект.
Даже если поддерживаются DVASPECT_OPAQUE и DVASPECT_TRANSPARENT, контейнер может использовать эти аспекты или нет. В частности, если он рисуется на растровом рисунке вне экрана и, следовательно, не беспокоится о мерцание, контейнер может использовать DVASPECT_CONTENT и однопрохохватный рисунок. Однако в двухпрохронном документе, если контейнер использует DVASPECT_OPAQUE во время передачи от переднего к заднему, то для завершения отрисовки объекта он должен использовать DVASPECT_TRANSPARENT во время обратной передачи.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть ocidl.h

См. также раздел

IViewObject::D raw