begin process at 2010 03 21 17:03:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > SÉLECTIONNNER, DÉPLACER, ÉTIRER DES LIGNES DANS UN CANVAS.

SÉLECTIONNNER, DÉPLACER, ÉTIRER DES LIGNES DANS UN CANVAS.


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :tcanvas, canvas, ligne, lignes, segment Niveau :Débutant Date de création :10/08/2006 Date de mise à jour :12/08/2006 22:21:57 Vu / téléchargé :3 359 / 790

Auteur : Caribensila

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Tout est dans le titre. C'est un petit prototype qui peut être utile pour rendre l'interface d'une application plus intuitive et plus ergonomique. J'espère pouvoir vous montrer un exemple bientôt...  :)


 Conclusion

Kenavo a proposé une méthode de sélection de ligne plus simple, mais cependant moins précise. Voir:

http://www.delphifr.com/code.aspx?ID=25973

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

12 août 2006 22:21:57 :
Ajout du DoubleBuffered. Correction du bug de la verticale et, par la même occasion, celui, induit, de la ligne réduite à 1 point.

 Sources du même auteur

Source avec Zip Source avec une capture LES FIBERS : DES THREADS NON PRÉEMPTÉS PAR LE SYSTÈME
Source avec Zip SCANNER ALEATOIREMENT TOUS LES PIXELS D'UN BITMAP
Source avec Zip Source avec une capture TEXTE GRAPHIQUE AVEC "VRAIE" OMBRE.
Source avec Zip CALCULER LES PERFORMANCES DES THREADS
Source avec Zip Source avec une capture MATCHESMASK ET LES EXPRESSIONS RÉGULIÈRES.

 Sources de la même categorie

Source avec Zip Source avec une capture PCB DESIGN LOGICIEL DE CRÉATION DE CIRCUIT IMPRIMÉ ET ACCESS... par jfs59
Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture COMPOSANT TDESKTOP par Bacterius
Source avec Zip CANVAS EN MILLIMÈTRE par barbichette
Source avec Zip Source avec une capture CERCLE PASSANT PAR 3 POINTS (2° VERSION) par John Dogget
RECOPIER UN ENREGISTREMENT D'UNE TABLE VERS UNE AUTRE TABLE par neosystemsteam
Source avec Zip Source avec une capture TRACER DES LIGNES, RECTANGLES (ET CARRÉS), ELLIPSES (ET CERC... par japee

Commentaires et avis

Commentaire de japee le 10/08/2006 16:44:58 administrateur CS

Salut,

J'ai pas encore regardé le code, mais j'ai envie de dire à Florent :
Mais pourquoi pas, justement, dans un TImage, ça simplifie, non ?

Et puis c'est plus facile d'entretien : lignes dociles à sol facile à cirer, quoi...

Commentaire de jfs59 le 10/08/2006 19:49:05

un bon exemple .. j'avais fait ca différemment .. reste a developper un container de vecteurs et de creer des formes vectorielles de rectangle, cercle, ellipse ou autres poligones ... et ensuite fonction copier coller ... impression sauvegarde etc ...

c'est un bon début ...

Commentaire de MAURICIO le 11/08/2006 11:46:08

Mon editeur d' images (dll appelée dans mes applis) se fait vieux: pas moyen de bouger/redimensionner une ligne comme ici (avant exportation vers un Bmp ou autres) ...
Même si ma version permet le copier/coller, le zoom, insertion de texte, de dessiner des lignes, cercles et autres fonctions graphiques, j' avoue que j' avais prévu de créer un compo TPaintControl pour notre belle communauté qui fonctionnerai à la manière d' un Corel: par objet dessiné.  
Ma démo sur les courbes Bézier est dans l' esprit de cette source:
http://www.delphifr.com/codes/MANIPULER-COURBES-BEZIER-SUPER-SIMPLE_22698.aspx

L' idée d' utiliser des vecteurs m' a aussi traversé l' esprit. Mais vous lisez dans mes pensées les gars?

C' est un projet très ambitieux, mais je pense que c' est faisable, sacré boulot quand même ...

En tout cas, bravo pour cette démo, comme toujours d' ailleurs  venant de notre Cari!!!

Commentaire de MAURICIO le 11/08/2006 11:53:29

Autre chose: avec la source de Caribensila sur les fichiers binaires:
http://www.delphifr.com/codes/INITIATION-FICHIER-SAUVEGARDE-BINAIRE_38197.aspx
il est possible, à la manière d' un Corel, de créer son propre format d' images, applicable à cette source d' ailleurs ...

Commentaire de Caribensila le 11/08/2006 12:02:35

Salut à tous.

--> FLORENTH   Ca me semblait plus polyvalent de le faire dans un TImage. Mais tu as raison, ce serait plus logique sur la fiche. Et comme tu as expliqué comment faire...
   J'oublie tj ce foutu DoubleBuffered. 'Faut dire que chez moi il n'y a pas de "sautillements". Il y en a chez vous?

--> JAPEE   Tu verras qu'il n'y a rien de transcendant dans ce code. C'est vraiment pour débutant. Une bonne logique et qq notions de géométrie suffisent.

--> JFS59 & MAURICIO   C'est çui qui dit qui y est!  lol
Des vecteurs? 'connais pas trop... J'avais plutôt pensé utiliser les régions de Windows... à tester?
En tout cas, merci pour vos idées les gars.

Commentaire de Caribensila le 11/08/2006 13:21:29

Je crois que je n'échapperai pas à une initiation au calcul vectoriel. Si vous connaissez un bon tuto... ^^

PS: J'ai un PC assez récent:  Pentium D 830 Dual Core 3GHz et une GeForce 6700 XL...

Commentaire de cirec le 12/08/2006 00:06:39 administrateur CS

Salut,

c'est génial (avec un effet d'ombre en plus)
j'ai décelé un petit bug
quand tu selectionnes une ligne et que tu la modifies en une ligne parfaitement verticale
(tant qu'elle est selectionnée tu peux la modifier) mais si tu la laisses dans cette position tu n'arrives plus à la selectionner pour la modifier.

A l'horizontale ça fonctionne très bien.

@ Florenth : je pense effectivement que tu as une lada (chez moi ça ne clignote pas) (P4 3Ghz HT ATI pro )

Commentaire de cirec le 12/08/2006 00:15:52 administrateur CS

en fait j'arrive à re-selectionner la ligne mais que par les extemités

je vais regarder le code d'un peut plus près ...

@+
Cirec

Commentaire de cirec le 12/08/2006 00:54:06 administrateur CS

Voici ce que j'ai modifier pour que ça fonctionne.

Et dans tous les sens : :-)


j'ai laissé le code original en commentaire


function ToucheLigne(Pt, Pt1, Pt2:  TPoint):  Boolean;
  {Détermne si Pt est proche du segment Pt1-Pt2 (fonction de Ecart).}
  var
        A,B,Dist : Double;
  begin
  //result := false;  // voir plus loin ****
  {Calcul des coefficients de la droite Pt1-Pt2 d'équation y = Ax+B}
  if (Pt1.X - Pt2.X) = 0
  then //A:= 0  à la place de A := 0 j'effectue le calcule inverse ...
  Begin
  A := (Pt1.X - Pt2.X) / (Pt1.Y - Pt2.Y);
  B :=  Pt1.X - A * Pt1.Y;
  {Calcul de la distance de Pt à la droite Pt1-Pt2}
  Dist := Abs(Pt.X - A * Pt.Y - B) / Sqrt(1 + Sqr(A));
  End
  else
  Begin  // ... du calcule originale
  A := (Pt1.Y - Pt2.Y) / (Pt1.X - Pt2.X);
  B :=  Pt1.Y - A * Pt1.X;
  {Calcul de la distance de Pt à la droite Pt1-Pt2}
  Dist := Abs(Pt.Y - A * Pt.X - B) / Sqrt(1 + Sqr(A));
  End;
  {Vérification}
  //if (Dist <= Ecart)
  //and (Distance(Pt,Pt1) + Distance(Pt,Pt2) <= Dist + Distance(Pt1,Pt2))
  //then result := true;
  // *** on peut aussi écrir la condition comme suit ce qui évite l'initialisation
  //     en début de fonction : Result := False;
  Result := (Dist <= Ecart)
  and (Distance(Pt,Pt1) + Distance(Pt,Pt2) <= Dist + Distance(Pt1,Pt2));
end;


Voilà c'est tout
@+
Cirec

Commentaire de japee le 12/08/2006 01:05:19 administrateur CS

Rien n'échappe à ton oeil de lynx, Cirec.

Et tu fonds sur le bug comme le rapace sur sa proie. Tu le réduis inexorablement à l'état de néant... Tu le ventiles, tu le disperses, en quelque sorte. Tu lui montres qui c'est, Raoul, quoi...

Bien vu. ;-)

Commentaire de cirec le 12/08/2006 01:56:05 administrateur CS

"Rien n'échappe à ton oeil de lynx, Cirec"
Arrête j'ai les chevilles qui enfles ... mdr

Moi je dirais :
  
  - Une bonne dose de chance
  - Un écran 19" TFT ( à 20 cm des yeux) ça aide à voir claire :-)
  - Et surtout Caribensila qui à fait 95° du travail, repasser derrière quand le code
    est bien commenté c'est beaucoup plus facile (enfin pour moi)
  - Euh c'est qui Raoul ? mdr

Merci quand même ;-)

Commentaire de Caribensila le 12/08/2006 01:56:24

'tain! Ce Cirec!
Comme dit Japee, quel oeil de lynx!

...J'étais en train de me dire, tranquille, que "A" devait se balader vers l'infini... Et Cirec nous donne le code tout corrigé!!!
Si on pouvait te donner une note, Cirec, ce serait 10/10 et le premier prix de gentillesse, en prime!  :)

Merci!

Commentaire de cirec le 12/08/2006 02:06:35 administrateur CS

Ça y est elles ont pétées ... mes chevilles ... et y en a partout …  mdr

Merci beaucoup mais comme dit c'est parfois plus facile pour moi de corriger que de créer.

et en plus ça me fait plaisir et j'apprend toujours un peut plus comme ça !

"J'espère pouvoir vous montrer un exemple bientôt"
Bonne continuation pour la suite :-)

Commentaire de Caribensila le 12/08/2006 02:10:46

:)  Danke.

Commentaire de japee le 12/08/2006 08:39:58 administrateur CS

Citation approximative de Raoul Boltoni (Bernard Blier) dans "Les tontons flingueurs", film savoureux dialogué par l'immense Michel Audiard :
"je vais lui montrer qui c'est, Raoul, au gugusse de Montauban..." etc...

Commentaire de cirec le 12/08/2006 14:14:56 administrateur CS

@ Japee : Merci pour cette précision.
Tu te souviens des dialogues et des noms de personnages ?
Wouaou ... je me rappel bien du film mais c'est tout.
Bravo belle culture.
Il est vrai qu'Audiard ce sont des dialogues à part, ce langage fleuri sans jamais être vulgaire ni même ridicule nous laisse de bons souvenirs. Dommage qu'il n'y ait pas de relève.

@ Florenth : Ben on a pas de grande différence à part le HT désactivé.
J’ai autant de ram que toi et ma carte vidéo est moins bonne que la tienne
(Il me semble Ati pro  9200 128DDR 400Mhz AGP8) F0xi dirait c'est une daube :-)
Tu as désactivé le HT pour des raisons de compatibilités avec certaines applications ? (The Gimp par Ex.)

Je ne vois pas autre chose c'est quand même pas la petite différence de fréquence (2.8 à 3.0 Ghz) qui vont faire clignoter ta fiche !

Commentaire de Caribensila le 13/08/2006 15:43:11

--> Florenth Ce n'est pas un éditeur de formes que je cherche à faire. Ce serait plutôt un exemple montrant comment mettre en relation de dépendance diverses entités de façon ergonomique et intuitive. Quelque chose comme un générateur d'arbre généalogique ou un éditeur de plan pour un rapport écrit... Je cherche une idée qui apporterait quelque chose de nouveau et pas seulement une ressucée de ce code. J'attends l'inspiration... :)

Commentaire de japee le 13/08/2006 16:11:44 administrateur CS

"Quelque chose comme un générateur d'arbre généalogique..."
Marrant, c'est le prix dissuasif des logiciels "sérieux" de généalogie qui m'a, entre autres choses, amené à la programmation. Mais je me suis un peu perdu en route je crois, même si je pense revenir un jour à ma motivation initiale...

Commentaire de japee le 13/08/2006 16:16:42 administrateur CS

Mais ce que je voulais dire, surtout : c'est vrai que beaucoup de logiciels nécessitent un apprentissage, un formatage made in Microsoft pour tout dire, et qu'il me parait intéressant d'envisager une approche plus intuitive et plus ergonomique des dits logiciels. Ce que tu sembles envisager.

Commentaire de Caribensila le 13/08/2006 16:29:24

"je pense revenir un jour à ma motivation initiale"

Je comprends mieux ta connaissance poussée des problèmes de dates grégoriennes et de dates juliennes...  :)

Que faisiez-vous dans la nuit du 5 au 14 octobre 1582?   ;)

Commentaire de japee le 13/08/2006 16:36:16 administrateur CS

Tout à fait, Caribensila.
J'ai même en réserve un code basé sur le calendrier perpétuel Moret afin de déterminer le jour de la semaine en fonction de la date, tenant compte effectivement de la nuit du 5 au 14, lol ;-)
Mais je ne suis pas sûr que ce travail soit très intéressant, c'est plutôt un exercice de programmation, quoique...

Commentaire de cirec le 13/08/2006 16:37:33 administrateur CS

Après le jour le plus long ...

Nous avons la nuit la plus longue :-)

Alors ?
Le monsieur vous demande :
Que faisiez-vous dans la nuit du 5 au 14 octobre 1582?   ;)

Commentaire de Caribensila le 13/08/2006 16:45:56

Ouais, un vrai casse-tête!
Il y a un décalage temporel couplé à un décalage géographique (tu te souviens de notre discussion, Japee?).
Si ton code résoud tous ces problèmes, il faudrait le publier! lol
Mais c'est un sacré boulot d'historien-géographe...

Commentaire de japee le 13/08/2006 16:50:28 administrateur CS

Oui, je m'en souviens... c'était sur un code de Grandvizir il me semble.
En fait, il suffirait d'introduire un paramètre variable correspondant à la date de passage Julien->Grégorien, à charge à l'utilisateur de connaître cette date, sinon date officielle...
Cirec> m'en rappelle plus, j'avais un mal de tête carabiné au réveil, lol !

Commentaire de cantador le 20/07/2008 14:38:07

@cari :
il manque Randomize (juste en début de create),
pour que à l'ouverture les lignes s'affichent aléatoirement.

Commentaire de Caribensila le 22/07/2008 12:10:22

C'est  exact, Cantador.
Mais, sans prétendre que cela était voulu, pour cette démo c'est pas trop grave je pense.

En tout cas je suis heureux de constater qu'il y a encore des gens qui cherchent et deterrent de vieux sources. Et pas un débutant ( les débutants ayant une fâcheuse inclination à poster leurs questions sur le forum au 1er contre-temps, de nos jours ;) !

Commentaire de MAURICIO le 22/07/2008 12:30:32

Même si on poste pas de commentaires, on suit la conversation et l' évolution des sources ^^

"les débutants ayant une fâcheuse inclination à poster leurs questions sur le forum au 1er contre-temps, de nos jours" Je pense que l' ajout de questions sur le forum devrait être bloqué de temps en temps pour obliger les membres à penser par eu même au lieu de poser une question pour chaque ligne de leur code. Pour certains, on arrive presque à refaire leur projet rien qu' en regroupant les réponses à leurs questions.
Surtout que c' est en cherchant que l' on trouve des réponses ... sur d' autres sujets lol

A+ et bonnes vacances à tous!!!

Commentaire de cantador le 22/07/2008 17:46:54

@Cari et Mauricio :

Et c'est tellement vrai !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

modifier des lignes de canvas [ par ghassenus ] j'ai créer une application graphique qui dessine des lignes sur un TPaintBox je voudrais que ,aprés les avoires dessinés'je puisse les manipuler les r Qui saurait resoudre un Gros Problem pour tester des pixel ! Un Defi ! [ par glt0732 ] Bonjour a tous ! j'ai vraiment un gros problem sur delphi 7,alors est-ce que Delphi Bug, ou alors c'est le language, en tout qu'a c'est vraiment bizar ListView & ListItem [ par Bruto ] Voila encore une question sur ListView et ListItem. En fait, j'affiche 4 lignes dans ma listview. Quand je double-clic une de ces lignes, le listItem Type de donnée personnel [ par TkILLA ] Bonjour,je souhaiterai cr&#233;er un type de donn&#233;e personnalis&#233;. Je m'explique :je trace des lignes et des rectangles, pour chque ligne je Problème d'index [ par blinkseb ] Bonjour &#224; tous, Je poss&#232;de sur une form diff&#233;rent TImage, align&#233;s en lignes et en colonnes. En sachant que les images sont r tstringgrid colorier une ligne suivant le contenu d'une case [ par creas ] bonjour je sais que beaucoup d'exemple ssont sur le forme mais voila je n arrive pas &#224; changer le fond de couleur d une ligne suivant le contenu compteur de ligne selon sa couleur dans un richedit [ par alcat2002 ] Bonjour a tous!Je suis sous delphi 7.Voila j'ai un richedit, dont les lignes changent de couleur.En face de chaque ligne, un label pour faire un petit listview numeroter les lignes [ par sagitaz ] bonjour à tous voici mon soucis, j'ai 4 colonnes dans une listview, je rempli celle-ci avec les infos des fichier que je selectionne grace a un opendi affiché la dernière ligne dans un memo [ par philpas ] bonjour,j'ai un memo (Memo2_Reception) qui recoit des donn&#233;es d'un port s&#233;rie. Pour visualiser la r&#233;ception j'utilise la fonction Memo2 affiché les dernières lignes dans un richedit [ par philpas ] bonjour,j'utilisais un memo. A chaque fois que j'utilise la fonction memo.lines.add('ligne'); celui ci m'affiche la ligne &#224; l'&#233;cran m&#234;m


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,092 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales