Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All


Represents matrices in the HTML_PAINT_DRAW_INFO structure for transforming or translating a rendering behavior's display output when the behavior supports transformations.


typedef struct _HTML_PAINT_XFORM {
  FLOAT eM11;
  FLOAT eM12;
  FLOAT eM21;
  FLOAT eM22;
  FLOAT eDx;
  FLOAT eDy;



Member of a transformation matrix. For details, see Remarks.


Member of a transformation matrix. For details, see Remarks.


Member of a transformation matrix. For details, see Remarks.


Member of a transformation matrix. For details, see Remarks.


Translation amount in the horizontal direction.


Translation amount in the vertical direction.


When a rendering behavior has indicated it supports tranformations, MSHTML will supply transformation values in an HTML_PAINT_XFORM structure. This structure is available to the rendering behavior during MSHTML calls to the behavior's implementation of IHTMLPainter::Draw. The behavior retrieves this structure by calling IHTMLPaintSite::GetDrawInfo. (A rendering behavior must specify the HTMLPAINT_DRAWINFO_XFORM flag when calling IHTMLPaintSite::GetDrawInfo to retrieve transformation information.) This method retrieves data to an HTML_PAINT_DRAW_INFO structure that itself contains the HTML_PAINT_XFORM structure.

Note  A rendering behavior indicates that it supports transformations by implementing IHTMLPainter::GetPainterInfo so that it sets the HTMLPAINTER_SUPPORTS_XFORM flag in the lFlags member of the HTML_PAINTER_INFO* pInfo parameter. MSHTML calls IHTMLPainter::GetPainterInfo to determine the rendering behavior's capabilities and requirements. If a rendering behavior does not support transformations, the behavior will not be drawn under some circumstances—when a IHTMLRuleStyle3::zoom style is applied to the region containing the rendering behavior, for instance.

When implementing IHTMLPainter to support transformations, it is not necessary to know the kind of tranformation because MSHTML supplies the values. The implementer's responsibility is to retrieve the structure and add or multiply its values by the x- and y- coordinates being drawn, according to the following formulas.

The HTML_PAINT_XFORM structure offers two ways to alter how a behavior renders its shapes: transformation and translation. Transformations are applied before translation.

Transformations are of four types: scaling, rotation, shear, and reflection.

The four values eM11, eM12, eM21, and eM22 can be thought of as members of a 2 x 2 transformation matrix, T.

Transformation matrix T

The vector for the coordinates of the original point is multiplied by this transformation matrix to calculate the coordinates of the transformed point.

Equation for coordinates of transformed point

The kind of transformation—scaling, rotation, shear, or reflection—is determined by the values for eM11, eM12, eM21, and eM22.

  • A scaling transformation stretches or shrinks a shape in the horizontal and vertical direction. The general form is shown in the following equation.

    Equation for scaling transformation

    where h and v are the multipliers for the horizontal and vertical directions respectively. A value greater than 1 enlarges a shape in that direction. A value less than 1 shrinks it.

  • A rotation transformation rotates a shape around the origin by a specified angle in a clockwise direction. The general form is shown in the following equation.

    Equation for rotation transformation

    where a is the angle of rotation.

  • A reflection transformation flips a shape around a line, creating a mirror image of the shape on the other side of the line. The general form is shown in the following equation.

    Equation for reflection transformation

    where w is the clockwise angle between the x-axis and the line of reflection passing through the origin.

  • A shear transformation deforms a shape by tilting it over or stretching it into a parallelogram, much like the way italics tilt plain text.The general form is shown in the following equation.

    Equation for shear transformation

Translations shift a shape by specified amounts in the horizontal (eDx) and vertical (eDy) directions. In matrix terms, the values eDx and eDy form a 1 x 2 matrix (or vector) that is added to the vector for the original coordinates to calculate the translated coordinates, as shown in the following equation.

Equation for calculating translated coordinates

Here, x and y are the original coordinates of any point in the shape, and x' and y' are the coordinates for the translated point as it will be rendered.

The tranformation and translation can also be represented as an affine transformation using a single 3 x 3 affine matrix, as shown in the following equation.

Matrix representing transformation and translation

The following shows the complete equation.

Complete equation


Minimum supported client

Windows XP [desktop apps only]

Minimum supported server

Windows 2000 Server [desktop apps only]







Community Additions

© 2015 Microsoft