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
[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE[RIA SERVICES] INCLUDE ET DOMAINDATASOURCE par Audrey
Dans un de mes articles précédents , j'avais parlé des DomainDataSource avec RIA Services dans le cas d'une interface Maître - Détail. Dans le même principe, je vais parler d'une autre manière de mettre en forme ce cas d'interface avec RIA Services. Et po...
Cliquez pour lire la suite de l'article par Audrey ZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATIONZUNE : VERSION ZUNE SOFTWARE V 4.2 ET LA SOCIALISATION par ROMELARD Fabrice
Une des nouveautés de la version V 3.0 était l'apparition de l'onglet Social qui ne fonctionnait que si le MarketPlace était activé sur son poste. Cela limitait donc son intérêt, car hors du cadre commercial USA-CANADA, peu de monde trouva...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice PRATIQUE DE SILVERLIGHT PAR ERIC AMBROSIPRATIQUE DE SILVERLIGHT PAR ERIC AMBROSI par MPOWARE
Je viens de finir la lecture du dernier livre d'
Eric Ambrosi
éditions PEARSON
Son livre donne une approche pratique de Silverlight qui sera aussi bien comprise par le développeur que par le designeur.
Tous les aspects du développement RIA sont abor...
Cliquez pour lire la suite de l'article par MPOWARE APPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NETAPPRENDRE à DéVELOPPER POUR LES MOBILES AVEC LA NOUVELLE GéNéRATION .NET par odewit
2 déclinaisons de Silverlight et 2 déclinaisons de Mono permettent dorénavant (ou permettront prochainement) de développer des applications .NET mobiles pour les principales plates-formes du marché :
Silverlight pour Symbian, basé sur Silverlight 2...
Cliquez pour lire la suite de l'article par odewit ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2ZUNE : NOUVELLE VERSION DU ZUNE SOFTWARE - V 4.2 par ROMELARD Fabrice
Avec la dernière génération du lecteur MP3 de Microsoft, le ZUNE HD, Microsoft a publié une nouvelle version du logiciel pour PC. Ainsi, je me suis décidé à installer celle-ci sur mon Tablet PC ACER, comme toujours le logiciel est donc tél...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : DELPHIRE : DELPHI par overtaker
Cliquez pour lire la suite par overtaker RE : DELPHIRE : DELPHI par rt15
Cliquez pour lire la suite par rt15
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|