Partager via


Modes de mappage et traductions

Les modes de mappage sont décrits dans le tableau suivant.

Mode de mappage Description
MM_ANISOTROPIC Chaque unité dans l’espace de page est mappée à une unité spécifiée par l’application dans l’espace de l’appareil. L’axe peut ou non être également mis à l’échelle (par exemple, un cercle dessiné dans l’espace du monde peut apparaître comme une ellipse lorsqu’il est représenté sur un appareil donné). L’orientation de l’axe est également spécifiée par l’application.
MM_HIENGLISH Chaque unité dans l’espace de page est mappée à 0,001 pouce dans l’espace de l’appareil. La valeur de x augmente de gauche à droite. La valeur y augmente de bas en haut.
MM_HIMETRIC Chaque unité dans l’espace de page est mappée à 0,01 millimètre dans l’espace de l’appareil. La valeur de x augmente de gauche à droite. La valeur y augmente de bas en haut.
MM_ISOTROPIC Chaque unité dans l’espace de page est mappée à une unité définie par l’application dans l’espace de l’appareil. Les axes sont toujours mis à l’échelle égale. L’orientation des axes peut être spécifiée par l’application.
MM_LOENGLISH Chaque unité dans l’espace de page est mappée à 0,01 pouce dans l’espace de l’appareil. La valeur de x augmente de gauche à droite. La valeur y augmente de bas en haut.
MM_LOMETRIC Chaque unité dans l’espace de page est mappée à 0,1 millimètre dans l’espace de l’appareil. La valeur de x augmente de gauche à droite. La valeur y augmente de bas en haut.
MM_TEXT Chaque unité de l’espace de page est mappée à un pixel ; autrement dit, aucune mise à l’échelle n’est effectuée du tout. Lorsqu’aucune traduction n’est en vigueur (il s’agit de la valeur par défaut), l’espace de page en mode de mappage MM_TEXT équivaut à l’espace d’appareil physique. La valeur de x augmente de gauche à droite. La valeur y augmente de haut en bas.
MM_TWIPS Chaque unité dans l’espace de page est mappée à un vingtième point d’imprimante (1/1440 pouce). La valeur de x augmente de gauche à droite. La valeur y augmente de bas en haut.

 

Pour définir un mode de mappage, appelez la fonction SetMapMode . Récupérez le mode de mappage actuel pour un contrôleur de domaine en appelant la fonction GetMapMode .

Les transformations d’espace de page en espace d’appareil se composent de valeurs calculées à partir des points donnés par la fenêtre et la fenêtre d’affichage. Dans ce contexte, la fenêtre fait référence au système de coordonnées logiques de l’espace de page, tandis que la fenêtre d’affichage fait référence au système de coordonnées d’appareil de l’espace de l’appareil. La fenêtre et la fenêtre d’affichage se composent chacune d’une origine, d’une étendue horizontale (« x ») et d’une étendue verticale (« y »). Les paramètres de la fenêtre sont en coordonnées logiques ; la fenêtre d’affichage dans les coordonnées de l’appareil (pixels). Le système combine les origines et les étendues de la fenêtre et de la fenêtre d’affichage pour créer la transformation. Cela signifie que la fenêtre et la fenêtre d’affichage spécifient chacune la moitié des facteurs nécessaires pour définir la transformation utilisée pour mapper les points de l’espace de page à l’espace de l’appareil. Par conséquent, le système mappe l’origine de la fenêtre à l’origine de la fenêtre et les étendues de fenêtre aux étendues de la fenêtre, comme illustré dans l’illustration suivante.

illustration montrant une origine de fenêtre dans l’espace de page et une origine de point de vue dans l’espace de l’appareil

Les étendues de fenêtre et de fenêtre d’affichage établissent un ratio ou un facteur de mise à l’échelle utilisé dans les transformations espace de page par rapport à l’espace de l’appareil. Pour les six modes de mappage prédéfinis (MM_HIENGLISH, MM_LOENGLISH, MM_HIMETRIC, MM_LOMETRIC, MM_TEXT et MM_TWIPS), les étendues sont définies par le système lorsque SetMapMode est appelé. Ils ne peuvent pas être modifiés. Les deux autres modes de mappage (MM_ISOTROPIC et MM_ANISOTROPIC) nécessitent que les étendues soient spécifiées. Pour ce faire, appelez SetMapMode pour définir le mode approprié, puis appelez les fonctions SetWindowExtEx et SetViewportEx pour spécifier les étendues. En mode de mappage MM_ISOTROPIC, il est important d’appeler SetWindowExtEx avant d’appeler SetViewportExtEx.

Les origines de la fenêtre et de la fenêtre d’affichage établissent la traduction utilisée dans les transformations de l’espace de page en espace d’appareil. Définissez les origines de la fenêtre et de la fenêtre d’affichage à l’aide des fonctions SetWindowOrgEx et SetViewportOrgEx . Les origines sont indépendantes des étendues et une application peut les définir quel que soit le mode de mappage actuel. La modification d’un mode de mappage n’affecte pas les origines actuellement définies (même si cela peut affecter les étendues). Les origines sont spécifiées en unités absolues que le mode de mappage actuel n’affecte pas. Pour modifier les origines, utilisez les fonctions OffsetWindowOrgEx et OffsetViewportOrgEx .

La formule suivante montre les mathématiques impliquées dans la conversion d’un point de l’espace de page en espace de l’appareil.

Dx = ((Lx - WOx) * VEx / WEx) + VOx 

Les variables suivantes sont impliquées.

Dx     x value in device units 
Lx     x value in logical units (also known as page space units) 
WOx     window x origin 
VOx     viewport x origin 
WEx     window x-extent 
VEx     viewport x-extent 

La même équation avec y remplaçant x transforme le composant y d’un point.

La formule commence par décaler le point de son origine de coordonnées. Cette valeur, qui n’est plus biaisée par l’origine, est ensuite mise à l’échelle dans le système de coordonnées de destination en fonction du ratio des étendues. Enfin, la valeur mise à l’échelle est décalée par l’origine de destination vers son mappage final.

Les fonctions LPtoDP et DPtoLP peuvent être utilisées pour convertir des points logiques en points d’appareil et des points d’appareil en points logiques, respectivement.