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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|