setGraphicsMode 函数 (wingdi.h)

SetGraphicsMode 函数为指定的设备上下文设置图形模式。

语法

int SetGraphicsMode(
  [in] HDC hdc,
  [in] int iMode
);

参数

[in] hdc

设备上下文的句柄。

[in] iMode

图形模式。 此参数的取值可为下列值之一:

含义
GM_COMPATIBLE
设置与 16 位 Windows 兼容的图形模式。 这是默认模式。 如果指定了此值,则应用程序只能通过调用设置窗口和视区范围和原点的函数来修改世界到设备的转换,但不能使用 SetWorldTransformModifyWorldTransform;调用这些函数将失败。 设置窗口和视区范围和原点的函数示例包括 SetViewportExtEx 和SetWindowExtEx。
GM_ADVANCED
设置允许世界转换的高级图形模式。 如果应用程序将设置或修改指定设备上下文的世界转换,则必须指定此值。 在此模式下,所有图形(包括文本输出)完全符合设备上下文中指定的世界到设备转换。

返回值

如果函数成功,则返回值为旧图形模式。

如果函数失败,则返回值为零。

注解

在三个方面,图形输出因图形模式而异:

  1. 文本输出:在GM_COMPATIBLE模式下,TrueType (或矢量字体) 文本输出的行为与 DC 中世界到设备转换的光栅字体文本输出方式大体相同。 TrueType 文本始终从左到右和从右向上写入,即使其余图形将在 x 或 y 轴上翻转。 仅缩放文本) TrueType (或矢量字体的高度。 在GM_COMPATIBLE模式下写入非水平文本的唯一方法是为此设备上下文中选择的逻辑字体指定非零转义和方向。

    在GM_ADVANCED模式下,TrueType (或矢量字体) 文本输出完全符合设备上下文中的世界到设备转换。 光栅字体的转换功能非常有限, () 一些整数因子进行拉伸。 图形设备接口 (GDI) 尝试使用光栅字体生成最佳输出,以实现非平凡转换。

  2. 矩形排除:如果设置了默认GM_COMPATIBLE图形模式,则系统会在绘制矩形时排除底部和最右侧的边缘。

    如果应用程序想要绘制右下角的矩形,则需要GM_ADVANCED图形模式。

  3. 弧线绘制:如果设置了默认GM_COMPATIBLE图形模式,GDI 将使用设备空间中的当前弧线方向绘制弧线。 根据此约定,arc 不遵循需要沿 x 或 y 轴翻转的页面到设备转换。

    如果设置了GM_ADVANCED图形模式,GDI 始终在逻辑空间中逆时针方向绘制弧线。 这相当于在GM_ADVANCED图形模式下,弧形控制点和弧线本身都完全遵循设备上下文的世界到设备转换的语句。

示例

有关示例,请参阅 使用坐标空间和转换

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 wingdi.h (包括 Windows.h)
Library Gdi32.lib
DLL Gdi32.dll

另请参阅

坐标空间和转换函数

坐标空间和转换概述

CreateDC

GetArcDirection

GetDC

GetGraphicsMode

ModifyWorldTransform

SetArcDirection

SetViewportExtEx

SetViewportExtent

SetWindowExtEx

SetWindowExtent

SetWorldTransform