Comment compenser le retourné système de coordonnées de base des graphiques pour faciliter le dessin?
C'est vraiment une douleur, mais toujours quand je dessine une UIImage en drawRect:, c'est à l'envers.
Quand je feuillette les coordonnées, l'image tire correctement, mais au détriment de tous les autres CG fonctions de dessin "mauvais" (retourné).
Quelle est votre stratégie lorsque vous avez à dessiner des images et d'autres choses? Est-il une règle de ne pas se coincer dans ce problème, encore et encore?
Aussi, une chose désagréable quand je flip de l'axe des y est, que mon CGRect de la UIImageView image est mauvaise. Au lieu de l'origine qui apparaît à 10,10 en haut à gauche comme prévu, il s'affiche en bas.
Mais en même temps, tous ceux de la ligne normale des fonctions de dessin de CGContext prendre des coordonnées correctes. tracer une ligne au -drawRect avec origine 10,10 en haut à gauche, vont vraiment commencer en haut à gauche. Mais en même temps c'est étrange, parce que les graphiques de base a fait un retourné système de coordonnées avec y 0 en bas.
Donc il semble que quelque chose est vraiment incohérent là. Dessin avec CGContext les fonctions coordonnées comme "prévu" (cmon, personne ne croit que dans les coordonnées à partir du bas à gauche, c'est idiot), tandis que le dessin de tout type d'image fonctionne toujours de la "mauvaise" façon.
Utilisez-vous des méthodes d'aide à dessiner des images? Ou est-il quelque chose d'utile qui fait de l'image le dessin n'est pas une douleur dans le cul?
Vous devez vous connecter pour publier un commentaire.
Problème: l'Origine est au coin inférieur gauche; positif y va de bas en haut (y négative va vers le bas).
Objectif: de l'Origine au coin supérieur gauche; positive y aller vers le bas (négatif y allez vers le haut).
Solution:
La façon de le faire dans le code est à traduire par le point de vue des limites de hauteur et de l'échelle par (1, -1), dans cet ordre.
Il ya un couple de portions de la Quartz 2D Guide de Programmation qui sont pertinentes à ce sujet, y compris “Le dessin d'un Contexte Graphique de l'iPhone OS” et l'ensemble de la le chapitre sur les Transformations. Bien sûr, vous devriez vraiment lire l'ensemble de la chose.
Vous pouvez le faire par appliquer affinetransform sur le point que vous voulez convertir dans UIKit liées coordonnées. Suivant est un exemple.
La meilleure réponse à ce problème est l'utilisation de la
UIImage
méthodedrawInRect:
attirer votre image. Je suis en supposant que vous voulez que l'image s'étendent sur l'ensemble des limites de votre point de vue. C'est ce que vous pouvez taper dans votredrawRect:
méthode.Au lieu de:
Écrire ceci:
Racontez-vous la UIImage dessiner, ou faire sa CGImage et le dessin qu'?
Comme indiqué dans “Le dessin d'un Contexte Graphique de l'iPhone OS”, UIImages sont conscients de la différence de coordonner les espaces et doit se dessiner correctement sans avoir à retourner vos coordonner vous-même l'espace.
Appel de la méthode ci-dessus à l'aide du code ci-dessous:
Ce code traite avec l'obtention de la moitié gauche d'une image à partir d'une UIImageview et le réglage de la donc généré une image à un nouveau imageview - imgViewleft