Drawstring sur une courbe ou une suite de points

olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 16 avril 2009 à 09:27
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 16 avril 2009 à 18:57
Bonjour

Je dois dessiner du texte qui doit suivre un chemin défini par un ensemble de points

Quelle serait la bonne approche ?

5 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
16 avril 2009 à 10:50
Salut

A mon avis, l'approche serait la suivante :

1) Créer le chemin
Je pense que là on parle de courbe et non de petites droites. Donc déjà ce sera le premier problème
2) Découper ton texte lettre par lettre (ou mot par mot) et le placer dans des contrôles qui peuvent tourner
Une picturebox peut-être ?
3) Trouver la "dérivée" (si on peut parler ainsi, puisqu'il ne s'agit pas forcément d'une fonction) de ta courbe
Ca te permettra de connaître la rotation qu'il faudra que tu apportes à chaque lettre selon sa position

C'est extrêmement vague, mais c'est la seule réponse que j'aie à te fournir pour le moment.

Krimog :
while (!(succeed = try())) ;
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
16 avril 2009 à 11:00
Merci pour ta réponse

Ce n'est pas une courbe mais bien des points formant des petites droites

Et je pense qu'il y a deja des choses +/- prevues pour cela, ne serait-ce que le TransformMatrix du Graphics

Je continue a chercher
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
16 avril 2009 à 11:53
Ah, bah si ce sont des petites droites, le point 1) et le point 3) ne sont plus nécessaires, et ça devient super facile :

Si ton segment est défini par les points A(xa, ya) et B(xb, yb), l'angle de rotation est = atan ((yb-ya)/(xb-xa)). (Attention à vérifier que xb != xa, et si xb == xa, l'angle est de 90° ou -90° selon que respectivement yb > ya ou yb < ya)

Krimog :
while (!(succeed = try())) ;
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
16 avril 2009 à 13:48
Merci

Mais ce que tu explique ici c'est le concept mathématique pour calculer l'angle de rotation de chaque element
Je pourrais meme le programmer en assembleur avec un peu de patience ;-)

Mais avant de partir dans cette voie j'aimerais savoir s'il n'existe pas des methodes un peu plus spécialisées pour cela.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
16 avril 2009 à 18:57
Salut, si c'est pour suivre 2 points :

private const string s = "http://www.csharpfr.com/";



protected override void OnPaint( PaintEventArgs args )
{
    //base.OnPaint( args );



    Graphics g = args.Graphics;
    g.TranslateTransform( 20.0f, 20.0f );
    g.RotateTransform( 45.0f );
    g.DrawString( s, this.Font, SystemBrushes.ControlText, 10.0f, 10.0f );
}


C'est possible aussi avec un GraphicsPath.
0
Rejoignez-nous