[VC++] tRacer une ligne bicolore

tRacer une ligne bicolore [VC++] - C++ - Programmation

Marsh Posté le 17-11-2003 à 12:03:33    

Salut,
 
Je me demandais comment je pourrais faire pour tracer une ligne bicolore...
 
Par exemple, pour tracer une ligne monocolore du Pt (0,0) au point (97, 122), je ferai :
 

Code :
  1. pDC->MoveTo(0,0);
  2. pDC->LineTo(97,122);


 
Tout en sélectionnant la bonne couleur dans mon CPen.
Mais mainteannt, imaginons que je veuilles tracer un tiers de la ligne avec une couelur et un autre tiers avec une deuxieme couleur, comment pourrais je faire?
 
J'ai pas envie que ma ligne ait une cassure car 97/3 et 122/3 ne sont pas entiers (par exemple en tracant la ligne de l'origine à un premier point avec la premeire couleur, puis de ce point intermédiaire au point d'arrivée de la 2eme couleur, le pt intermédiatre ayant des coordonnées entieres, donc les trois points n'étant pas exactement alignés)

Reply

Marsh Posté le 17-11-2003 à 12:03:33   

Reply

Marsh Posté le 17-11-2003 à 12:05:16    

Citation :

J'ai pas envie que ma ligne ait une cassure car 97/3 et 122/3 ne sont pas entiers (par exemple en tracant la ligne de l'origine à un premier point avec la premeire couleur, puis de ce point intermédiaire au point d'arrivée de la 2eme couleur, le pt intermédiatre ayant des coordonnées entieres, donc les trois points n'étant pas exactement alignés)


 
c'est un bien joli raisonnement mais tu oublie que de toute facon, meme en tracant une seule et meme ligne, tes points se seront pas alignés (vu de toute facon tu te tape une conversion en entier pour l'affichage)
Coupe la en tranche ta ligne, personne y verra rien

Reply

Marsh Posté le 17-11-2003 à 12:10:04    

D'accord, très bien, merci pour ta réponse aussi rapide (et aussi censée)! JE vais donc "couper" ma ligne enutilisant des coordonnées entières.
 
Dernière question :  
 
Je veux tracer des lignes entre deux cercles, mais je veux que ces lignes soient fléchées. Existe t il des facilités pour faire ca, ou alors vais je devoir tracer ces morceaux de fleche à la main, en utilisant les positions relatives des cercles, etc (pour calculer l'orientation des branches de la fleche?)

Reply

Marsh Posté le 17-11-2003 à 12:12:32    

eurf, en win32api je dirais a vu de nez qu'il faut que tu te tapes ca a la main, je ne me rapelle pas avoir vu de fonction pour faire ca (par contre en Winform oui)

Reply

Marsh Posté le 17-11-2003 à 12:16:21    

En WinForm? C'est quoi?
(Bon, ca me déplait psa de faire ça à la main si j'ai pas le choix, mais ca va demander foule de calculs)

Reply

Marsh Posté le 17-11-2003 à 12:19:25    

le dernier truc a crosoft (.net)
 
Foule de calcul non, tu peux faire ca simplement :
-> calculer le vecteur directeur de ta droite (V), avec norme(V) = 1
-> calculer le vecteur orthogonal a V (N. N.x = V.y, N.y = -V.x)
-> te mettre a P = PF - V * E (PF = Point final, E = taille de ta fleche)
-> faire une ligne de P + V*E a PF
-> faire une ligne de P - V*E a PF


Message édité par chrisbk le 17-11-2003 à 12:20:12
Reply

Marsh Posté le 17-11-2003 à 12:24:57    

Pour les étapes 4 et 5, je dirais :
 
-> faire une ligne de P + N*E a PF
-> faire une ligne de P - N*E a PF
 
Mais oui, c'est pas mal comme méthode (mais y a qd meme du calcul dans l'air)
 
Merci beaucoup!
 
Et h'hésite pas à me dire ce qu'est Winform, et surtout si ca vaut le coup de "migrer"

Reply

Marsh Posté le 17-11-2003 à 12:27:31    

ouais evidemment que c N, j'ai merdé :D (la je le calcul pour du vent)
 
Niveau calcul t'en fais donc pas, ca fera rigoler n'importe quel CPU un peu moderne (genre PII)
 
WinForm ben c'est la nouvelle tactique pour faire des interfaces. tu y accedes via tout ce qui est .NET (c# / managed C++...)
 
Si tu peux te le permettre, jete un oeil sur c#, pour la creation d'interface ca roxorise  
 

Reply

Marsh Posté le 17-11-2003 à 12:35:58    

D'accord, c'est noté!
 
je dispose de VS6, donc, le C#, je ne pense pas que j'ai ça en stock! (peut etre dans VS .NET?), mais je prends le conseil au cas où à l'avenir, j'ai l'occasion de m'y mettre!
 
Merci bien :hello:
 

Reply

Marsh Posté le 17-11-2003 à 12:36:22    

vs .net ouais.....

Reply

Marsh Posté le 17-11-2003 à 12:36:22   

Reply

Marsh Posté le 17-11-2003 à 13:35:21    

En Win32 comme en .NET, avec GDI+


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed