Accueil > Forum > > > > dessin
dessin
lundi 28 juin 2004 à 10:08:45 |
dessin

sebmime
|
Bonjou, Je développe un petit logiciel de dessin en delphi. Je dois pouvoir dessiner des lignes entre 2 points par exemple (pour ceci j'utilise des polyline). Ensuite, je veux savoir si l'utilisateur clique sur une ligne. Et je ne sais pas comment faire!! Apparemment c'est impossible avec les polyline car il n'y a pas d'évenements associés. Y'a t'il des objets qui font çà? Comment puis-je faire? Merci
|
|
lundi 28 juin 2004 à 19:46:23 |
Re : dessin

Delphiprog
|
L'unité Types déclare la fonction : function PtInRect(const Rect: TRect; const P: TPoint): Boolean;
Description PtInRect renvoie True si le point, P, se trouve à l'intérieur du rectangle, Rect, et False si P n'est pas dans Rect.
|
Or, un ligne n'est-elle pas un rectangle plat ?  Sinon, il reste la possibilité de vérifier la couleur du pixel là où a eu lieu le clic sur le composant graphique. May Delphi be with you
|
|
mardi 29 juin 2004 à 17:43:28 |
Re : dessin

Kenavo
|
Autre solution (mathématique) :
-Une ligne est définie par deux points (X1,Y1) et (X2,Y2). -Pour tout point de la ligne (X,Y) on a les égalités : (X2-X1)/(Y2-Y1) = (X-X1)/(Y-Y1) = (X2-X)/(Y2-Y);
Comme tu risques de cliquer à coté (les points de la ligne théoriques ne sont pas forcément entiers), il faut regarder si la valeur absolue de la différence entre deux systèmes est inférieur à une tolérance, par exemple if abs((X2-X1)/(Y2-Y1) - (X-X1)/(Y-Y1) ) < 0.05 then EnPleinDedans // Touché coulé ! else SegmentSuivant; // tu vérifies pour chaque segment du polyline.
Ken@vo ____________________ Code, Code, Codec !
|
|
mercredi 30 juin 2004 à 12:07:04 |
Re : dessin

Kenavo
|
Ah m.... , 1 - Fais gaffe quand même, vérifie que X1<=X<=X2 ou X2<=X<=X1, sinon ça identifie un point situé dans le prolongement de la ligne comme faisant partie de la ligne. 2 - Si Y1=Y2 (horizontale) ça plante grave ! (division par zéro) : cas à traiter à part. on doit avoir Y=Y1=Y2 (à un ou deux pixels près, ça dépend de ce que tu as bu avant) et (X1<=X<=X2 ou X2<=X<=X1) 3- Pour les verticales (X1=X2) il faut avoir X=X1=X2 (à un ou deux pixels près) et Y1<=Y<=Y ou Y2<=Y<=Y1
Et tout ça, ça ne simplifie pas le code !
Ken@vo ____________________ Code, Code, Codec !
|
|
lundi 6 septembre 2004 à 14:25:55 |
Re : dessin

atupac1
|
Et pour la solution du " PtInRect", est-ce que ca marche quand les rectangles se chevauchent ???????
Urgent.
|
|
lundi 6 septembre 2004 à 15:31:54 |
Re : dessin

Kenavo
|
Tu peux tester le résultat de la fonction
PtInRect(Rect(10,10,10,500),Point(10,200)); Pour moi ça marche pas ! Donc pour les lignes verticales (ou horizontales) pas de résultat. Et il est impossible de distinguer les deux diagonales d'un rectangle ....!
Ken@vo ____________________ Code, Code, Codec !
|
|
vendredi 28 octobre 2005 à 12:37:14 |
Re : dessin

akrame
|
pour la solution mathméatique , kenavo a utilisé l'equation d'une droite dans l'espace , mais puisque tu travaille sur un plan il suffit d'utiliser l'equation : a * Y + b * X + c = 0 pour trouver les réels a ,b et c il suffit de connaitre 2 points ( M(x,y) et N(x',y') , une fois que tu as ces 3 réels , a chaque clique tu vérifie si l'equation est égale à zéro , tu n'aura pa s de problème de virgule . pour un meilleur résultat tu peux faire : -0.1 < ay+bx+c < 0.1 fais attention : Si l'objet en question est un ségment et non une droite , il faut faire attention a ce que X > inf(x,x') et Y > inf(y,y') et X < sup(x,x') et Y < sup (y,y') bonne chance Akrame ------ www.informaticien.tk
|
|
Cette discussion est classée dans : dessin, polyline
Répondre à ce message
Sujets en rapport avec ce message
dessin sur un bitmap [ par jlg75 ]
J'ai commencé un petit prog de dessin pour mes débuts en DELPHI.Je dessine sur un bitmap (feuille blanche pour l'instant),chargé dans une TImage. J'ut
Image dans une TStatusBar !!! [ par MAsterC ]
Comment fait-on pour mettre un Tprogresbar et un petit dessin dans l'item TStatusBar ????POUR PLUS DE DÉTAILS ALLER VOIR DANS INTERNET EXPLORER EN BAS
Ajouter OnKeyPress à un TPaintBox [ par jlg75 ]
J'utilise un TPaintBox pour un programme de dessin, je voudrais qu'il réagisse à l'événement OnKeyPress (ou OnKeyDown) pour sortir de la fonction dess
CreateParented et rafraichissement ... [ par almi ]
Bonjour à tous,Je cherche à créer un ToolBox dans une application de dessin que je n'ai pas conçu.Pour ce faire, j'utilise la méthode CreateParented e
grille de dessin [ par ghassenus ]
salut bein je suis débutant en delphi et je souhaite crééer une grille de dessin ( comme papier millimetré )je voudrait que le crayon de dessin ait un
dessiner sur un flux vidéo [ par lupoo ]
hello,je n'arrive pas à faire apparaître du dessin sur l'image vidéo, elle s'impose toujours par dessus le dessin...comment faire pour inverser cela?m
selection de dessin [ par lupoo ]
bonjour,g un prog qui dessine une ligne élastique avec la souris. Je peux en faire un nombre indéfini. Mais si je veux reséléctionner une ligne que g
Ecrire dans un dessin [ par baygoor ]
voila, j ai utiliser un PaintBox pour dessiner un bulletin de notes, grace a de nombreux rectangles (les cellules), mais il faut aue l utilisateur pui
Dessin vectoriel (dur dur ???) [ par yoghisan ]
Bonjour,Comment peut on dessiner un point ?Comment peut on dessiner une ligne entre deux points ?Comment peut on dessiner une surface entre plusieurs
dessin dans une stringgrid [ par delphsur ]
Bonjour,Je souhaite mettre dans la première colonne de ma stringgrid une forme. Je sais mettre un rectangle mais je souhaiterai mettre un triangle ou
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|