IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Ameliorer mon programme paint?


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Ameliorer mon programme paint?
    Bonjour

    j'ai un programme paint qui dessine les objets(lignes , rectangles , desssin libre) grace a la propriete canvas(Delphi 6)

    mais je ne peut pas manipuler ces objets(deplacement, changer la taille...)

    je voudrai savoir comment on faire pour les manipuler

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par pirlo07
    Bonjour

    j'ai un programme paint qui dessine les objets(lignes , rectangles , desssin libre) grace a la propriete canvas(Delphi 6)

    mais je ne peut pas manipuler ces objets(deplacement, changer la taille...)

    je voudrai savoir comment on faire pour les manipuler

    Merci d'avance
    Bonjour et bienvenue sur developpez.com

    En fait, la conception de ton programme doit être repensée. En gros,tu a plusieurs solutions:
    Soit chaque utilisation d'outil est représenté par un record en mémoire que tu peux modifier
    Soit tu peux utiliser un système de calque comme sur PhotoShop qui permet de dissocier les utilisations des outils.

    Il doit certainement y avoir d'autres solutions
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    programme ... qui dessine ... (deplacement, changer la taille...)
    Une autre piste que j'utilise volontiers (pour me simplifier la vie) consiste, puisque t'as dit que c'est le programme qui dessine et pas toi, à lui demander de refaire entièrement le dessin avec les paramètres de modification + ceux qui n'ont pas changé.
    De plus si tu dessines d'abord dans un TbitMap au lieu du canvas d'un objet de Delphi cela offre d'autres possibilités de manipultion à la fois simples et avec peu de lignes de code.
    Par exemple tu peux dessiner finement dans un BitMap de grande taille puis le caser par exemple dans un petit TImage (avec Image1.Strech:=true; Image1.Picture.Graphic := Bitmap1; + les déclarations de dimensions de Image1 proportionnelles à celles du BitMap1) et le dessin est automatiquement mis à l'échelle sans avoir à le redessiner ... et le même BitMap tu peux bien entendu le faire dessiner, à une autre échelle canvas, sur n'importe quel canvas (par exemple pour l'imprimer avec Printer.Canvas.StretchDraw(R, BitMap1)) ... ou le sauver vers le disque (avec BitMap1.SaveToFile('C:\Chemin\nomFichier.bmp')) ...

    Autre avantage de manipulation lié au choix du tracé préalable dans un TBitMap : Si tu veux en plus pouvoir dessiner manuellement (tracé ou positionnement à la souris) sur le dessin dessiné par le grogramme : On considère que BitMap1 contient le dessin dessiné par le programme (par ex : une courbe y = f(u(x)) impossible à tracer à la souris) puis t'en fais une copie (BitMap2:=BitMap1) tu les places par exemple dans 2 TImage posés côte à côte et tu fais tes ajouts-manuel dans BitMap2 et tant que le résultat est bon tu le sauve de BitMap2 vers BitMap1 qui accumule tout ce que tu estimes bon ... et si le dernier ajout manuel dans BitMap2 n'est pas bon alors on écrase BitMap2-pas-bon avec BitMap1-bon (équivaut à une fonction Annuler-dernir-ajout) et on recommence le dernier ajout manuel avec une main plus sûre ... et si t'en veux plus tu peux aussi placer chaque étape manuelle intermédiare dans un BitMap[i] si tu veux par exple pouvoir recommencer les ajouts-manuels à partir du BitMap[3].

    Suggestion complémentaire : Si tu veux faire un code pour tracer par exemple la courbe y = x + Log(k*x) tant qu'à faire du code il est préférable de faire un code générique qui trace la courbe y = f(x) c'est à dire un code réutilisable pour n'importe quelle f(x). A cet effet je crée un type oMesCourbesFDeX = object dans lequel j'encapsule les propriétés, les fonctions et les procédures utiles au tracé de f(x) ... ce qui permet de décliner ce type sous forme de variables (var courbe1, courbe2 : oMesCourbesFDeX) et chaque possibilité de manipulation encapsulée dans le code du type object peut ensuite être ou ne pas être aux variables Courbe1 et courbe2 ... et comme une de ces possibilités me renvoie un TBitMap (bmp1:=courbe1.Bmp; bmp2:=courbe2.Bmp) donc possiblité de faire dessiner les deux BiTMap sur un BitMap de regroupement.

    Résumé :
    - à chaque modif : faire faire redessiner, dans un TBitMap, entièrement le dessin avec les paramètres de modification + ceux qui n'ont pas changé,
    - jongler si besoin est avec 2 ou plusieurs TBiTmap contenant le résultat de certaines étapes de création d'un même dessin ou d'une même famille de dessins,
    - préférer se fatiguer pour faire du code générique emballé dans un type object (ne pas confondre avec TObject).
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

Discussions similaires

  1. envoyer un mail avec mon programme
    Par shrek dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/12/2006, 12h27
  2. [JAR] Lancer mon programme
    Par Nico66 dans le forum Général Java
    Réponses: 6
    Dernier message: 08/12/2004, 15h29
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  4. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52
  5. Réponses: 11
    Dernier message: 17/03/2003, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo