(ocidl.h) DVASPECT2 枚举

指定用于优化绘图过程的新绘图方面。

语法

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::Draw