SetWorldTransform function (wingdi.h)

The SetWorldTransform function sets a two-dimensional linear transformation between world space and page space for the specified device context. This transformation can be used to scale, rotate, shear, or translate graphics output.


BOOL SetWorldTransform(
  [in] HDC         hdc,
  [in] const XFORM *lpxf


[in] hdc

A handle to the device context.

[in] lpxf

A pointer to an XFORM structure that contains the transformation data.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.


Below is the transformation matrix (note that the digits in the element notation are 1-based column number followed by 1-based row number, rather than the reverse).

| eM11 eM21 eDx |
| eM12 eM22 eDy |
| 0    0    1   |

So for any coordinates (x, y) in world space, the transformed coordinates in page space (x', y') can be determined in the way shown below.

| x' |   | eM11 eM21 eDx |   | x |   
| y' | = | eM12 eM22 eDy | . | y |
| 1  |   | 0    0    1   |   | 1 |

x' = x * eM11 + y * eM21 + eDx
y' = x * eM12 + y * eM22 + eDy

This function uses logical units.

The world transformation is usually used to scale or rotate logical images in a device-independent way.

The default world transformation is the identity matrix with zero offset.

The SetWorldTransform function will fail unless the graphics mode for the given device context has been set to GM_ADVANCED by previously calling the SetGraphicsMode function. Likewise, it will not be possible to reset the graphics mode for the device context to the default GM_COMPATIBLE mode, unless the world transformation has first been reset to the default identity transformation by calling SetWorldTransform or ModifyWorldTransform.


For an example, see Using Coordinate Spaces and Transformations.


Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header wingdi.h (include Windows.h)
Library Gdi32.lib
DLL Gdi32.dll

See also

Coordinate Space and Transformation Functions

Coordinate Spaces and Transformations Overview