SetGraphicsMode功能设置指定设备上下文的图形模式。
int SetGraphicsMode(
HDC 【HDC】, | //设备上下文的句柄 |
INT 【iMode平台】 | //图形模式 |
); |
参数
【HDC】
标识设备上下文。
【iMode平台】
指定图形模式。此参数可以是以下值之一:
值 | 含义 |
GM_COMPATIBLE | 设置与Windows 3.1版兼容的图形模式。这是默认模式。如果指定了此值,则应用程序只能通过调用设置窗口和视口范围和起点的函数来修改世界到设备的变换,但不能使用SetWorldTransform或ModifyWorldTransform来修改。对这些功能的调用将失败。设置窗口和视口范围和起源的函数的示例是SetViewportExtEx和SetWindowExtEx. |
GM_ADVANCED | Windows NT:设置允许世界变换的高级图形模式。如果应用程序将为指定的设备上下文设置或修改世界转换,则必须指定此值。在这种模式下,包括文本输出在内的所有图形都完全可以在设备上下文中指定的世界到设备的变换。 Windows 95:不支持GM_ADVANCED值。当播放增强的元文件时,Windows 95会尽力确保Windows 95上增强的元文件与Windows NT上的一样。为了实现这一点,Windows 95可以在播放特定的增强型元文件记录时模拟GM_ADVANCED模式。 |
返回值
如果函数成功,则返回值为旧图形模式。
如果函数失败,返回值为零。
备注
根据图形模式,图形输出有三个不同的区域:
1.Text输出:在GM_COMPATIBLE模式下,TrueType(或矢量字体)文本输出的行为与在DC中的世界到设备转换的栅格字体文本输出的行为大致相同。TrueType文本总是从左到右和向右向上写入,即使其余图形将在x或y轴上翻转。只有TrueType(或矢量字体)文本的高度才适当缩放。在GM_COMPATIBLE模式下编写非水平文本的唯一方法是为在此设备上下文中选择的逻辑字体指定非零擒纵选择和方向。
在GM_ADVANCED模式下,TrueType(或矢量字体)文本输出完全符合设备上下文中的世界到设备的变换。光栅字体仅具有非常有限的转换功能(延伸一些整数因子)。图形设备接口(GDI)试图通过栅格字体为非平凡变换产生最佳的输出。
2.轮廓排除:如果设置了默认的GM_COMPATIBLE图形模式,则系统在绘制矩形时排除底部和最右边的边缘。
如果应用程序想要绘制右下角的矩形,则需要GM_ADVANCED图形模式。
3.Arc绘图:如果设置默认的GM_COMPATIBLE图形模式,则GDI使用设备空间中的当前弧方向绘制弧。有了这个约定,弧不符合需要沿x或y轴翻转的页到设备转换。
如果设置了GM_ADVANCED图形模式,GDI总是在逻辑空间中逆时针方向绘制弧。这相当于在GM_ADVANCED图形模式中,弧控点和弧本身都完全尊重设备上下文的世界到设备的变换。
也可以看看
CreateDC, GetArcDirection, GetDC, GetGraphicsMode, ModifyWorldTransform, SetArcDirection, SetViewportExtent, SetViewportExtEx, SetWindowExtent, SetWindowExtEx, SetWorldTransform