描述
SetGraphicsMode功能设置指定设备上下文的图形模式。
C++ 语法
int SetGraphicsMode( __in HDC hdc, __in int iMode ); |
PowerBASIC 语法
FUNCTION SetGraphicsMode ( _ BYVAL hdc AS DWORD, _ BYVAL iMode AS LONG _ ) AS LONG |
参数
hdc
[in]处理设备上下文。
iMode
[in]指定图形模式。此参数可以是以下值之一。
值 |
含义 |
GM_COMPATIBLE |
设置与16位Windows兼容的图形模式。这是默认模式。如果指定了此值,则应用程序只能通过调用设置窗口和视口范围和起点的函数来修改世界到设备的变换,但不能使用SetWorldTransform或ModifyWorldTransform来修改。对这些功能的调用将失败。设置窗口和视口范围和起源的函数的示例是SetViewportExtEx和SetWindowExtEx. |
GM_ADVANCED |
Windows NT / 2000 / XP/ VISTA / Windows 7的:设置允许世界变换的高级图形模式。如果应用程序将为指定的设备上下文设置或修改世界转换,则必须指定此值。在此模式下,所有图形(包括文本输出)完全符合设备上下文中指定的世界到设备转换。
Windows 95/98 / Me:不支持GM_ADVANCED值。当播放增强的图元文件时,系统会尝试使增强的图元文件与在Windows NT / 2000 / XP上一样。为了实现这一点,系统可以在播放特定的增强型元文件记录时模拟GM_ADVANCED模式。 |
返回值
如果函数成功,则返回值为旧图形模式。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
根据图形模式,图形输出有三个不同的区域:
1. | 文本输出:在GM_COMPATIBLE模式下,TrueType(或矢量字体)文本输出的行为与相对于DC中的世界到设备转换的栅格字体文本输出的行为大致相同。即使在x或y轴上,其余的图形将被翻转,TrueType文本始终从左到右依次写入。只有TrueType(或矢量字体)文本的高度被缩放。在GM_COMPATIBLE模式中写入不是水平的文本的唯一方法是为在此设备上下文中选择的逻辑字体指定非零擒尺和方向。 |
在GM_ADVANCED模式下,TrueType(或矢量字体)文本输出完全符合设备上下文中的世界到设备转换。光栅字体仅具有非常有限的转换功能(延伸一些整数因子)。图形设备接口(GDI)尝试通过栅格字体产生最佳输出,用于非平凡转换。
2. | 矩形排除:如果设置默认的GM_COMPATIBLE图形模式,系统在绘制矩形时排除底部和最右边的边。 |
如果应用程序想要绘制右下角的矩形,则需要GM_ADVANCED图形模式。
3. | 弧图:如果设置了默认的GM_COMPATIBLE图形模式,则GDI使用设备空间中的当前弧方向绘制弧。有了这个约定,弧不符合需要沿x或y轴翻转的页到设备转换。 |
如果设置了GM_ADVANCED图形模式,GDI总是在逻辑空间中逆时针方向绘制弧。这相当于在GM_ADVANCED图形模式中,弧控点和圆弧本身完全尊重设备上下文的世界到设备的转换。
引用文件 #INCLUDE Once
WinGdi.inc(包括Windows.inc)