2010-06-18 3 views

Répondre

1

Pour changer uniquement le point coordonates, utilisez au lieu de:

e.Graphics.Transform = m 

celui-ci:

m.TransformPoints(points) 
1
  • Essayez d'ajuster la police à la taille/_zoom lors de l'établissement il
+0

bien ... peut-être, mais j'ai '' zoomX' et zoomY' mais la police n'a que 'Size' ... – serhio

1

travail Matrix avec l'image et ne pas distingue si ce texte ou la forme. Si la position du texte ne concerne pas, vous pouvez réinitialiser e.Graphics.Transform

Matrix oldMAtrix = e.Graphics.Transform; 
e.Graphics.Transform = m; 
e.Graphics.DrawEllipse(new Pen(Color.Black), 20, 20, 20, 20); 
e.Graphics.Transform = oldMAtrix; 
e.Graphics.DrawString("text", this.Font, SystemBrushes.ControlText, 10, 10); 
+1

Je dois utiliser' e.Graphics.ResetTransform() 'puis' p = Nouveau PointF (_ZoomX * oldp.X, oldp.Y * _ZoomY) ' – serhio

1

Vous devez annuler les graphiques transformer et d'en tirer votre texte avec une identité (ou au moins non mise à l'échelle) transformez.

+0

la position du texte est importante. .. – serhio

+0

Oui, vous devrez faire vous-même les calculs pour transformer la position d'insertion de texte dans la mise à l'échelle matrice. Mais vous ne pouvez pas dessiner le texte avec une matrice de mise à l'échelle active. –

Questions connexes