Share via


DVASPECT2-Enumeration (ocidl.h)

Gibt neue Zeichnungsaspekte an, die zum Optimieren des Zeichnungsprozesses verwendet werden.

Syntax

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

Konstanten

 
DVASPECT_OPAQUE
Wert: 16
Stellt die undurchsichtigen, einfach zu schneidenden Teile eines Objekts dar. Objekte können diesen Aspekt unterstützen oder auch nicht.
DVASPECT_TRANSPARENT
Wert: 32
Stellt die transparenten oder unregelmäßigen Teile des Objekts dar, in der Regel Teile, die teuer oder nicht ausgeschnitten werden können. Objekte können diesen Aspekt unterstützen oder auch nicht.

Hinweise

Um Zeichnungsoptimierungen zur Verringerung des Flimmerns zu unterstützen, muss ein Objekt in der Lage sein, Informationen zu drei verschiedenen Aspekten von sich selbst zu zeichnen und zurückzugeben.

Aspekt BESCHREIBUNG
DVASPECT_CONTENT Gibt den gesamten Inhalt eines Objekts an. Alle Objekte sollten diesen Aspekt unterstützen.
DVASPECT_OPAQUE Stellt die undurchsichtigen, einfach zu schneidenden Teile eines Objekts dar. Objekte können diesen Aspekt unterstützen oder auch nicht.
DVASPECT_TRANSPARENT Stellt die transparenten oder unregelmäßigen Teile des Objekts dar, in der Regel Teile, die teuer oder nicht ausgeschnitten werden können. Objekte können diesen Aspekt unterstützen oder auch nicht.
 

Der Container kann bestimmen, welche dieser Zeichnungsaspekte ein Objekt unterstützt, indem die neue Methode IViewObjectEx::GetViewStatus aufgerufen wird. Einzelne Bits geben Informationen darüber zurück, welche Aspekte unterstützt werden. Wenn ein Objekt die IViewObjectEx-Schnittstelle nicht unterstützt, wird davon ausgegangen, dass es nur DVASPECT_CONTENT unterstützt.

Je nachdem, welche Aspekte unterstützt werden, kann der Container das Objekt dazu auffordern, sich selbst nur während des Front-to-Back-Pass-Passs oder beides zu zeichnen. Die verschiedenen möglichen Fälle sind:

  • Objekte, die nur DVASPECT_CONTENT unterstützen, sollten während des Durchlaufs von hinten nach vorne gezeichnet werden, wobei alle undurchsichtigen Teile eines überlappenden Objekts ausgeschnitten werden. Da alle Objekte diesen Aspekt unterstützen sollten, kann ein Container, der sich nicht ums Flimmern sorgt – vielleicht, weil er in einer Offscreen-Bitmap zeichnet – entscheiden, alle Objekte auf diese Weise zu zeichnen und den Front-to-Back-Pass zu überspringen.
  • Objekte, die DVASPECT_OPAQUE unterstützen, werden möglicherweise aufgefordert, diesen Aspekt während des Durchgangs von vorne nach hinten zu zeichnen. Der Container ist dafür verantwortlich, die undurchsichtigen Bereiche des Objekts auszuschneiden, bevor ein weiteres Objekt dahinter gemalt wird.
  • Objekte, die DVASPECT_TRANSPARENT unterstützen, werden möglicherweise aufgefordert, diesen Aspekt während des Durchgangs von hinten nach vorne zu zeichnen. Der Container ist dafür verantwortlich, undurchsichtige Teile überlappender Objekte auszuschneiden, bevor ein Objekt diesen Aspekt zeichnen lässt.
Selbst wenn DVASPECT_OPAQUE und DVASPECT_TRANSPARENT unterstützt werden, kann der Container diese Aspekte verwenden oder nicht. Insbesondere wenn es sich um ein Zeichnen in einer Offscreen-Bitmap handelt und daher kein Flackern ist, kann der Container nur DVASPECT_CONTENT und eine 1-Pass-Zeichnung verwenden. Wenn der Container in einer Zwei-Pass-Zeichnung jedoch DVASPECT_OPAQUE während des Zwischendurchlaufs verwendet, muss er DVASPECT_TRANSPARENT während des Back-to-Front-Passes verwenden, um das Rendering des Objekts abzuschließen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile ocidl.h

Weitere Informationen

IViewObject::D raw