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 :

Assigné des Canvas de type différents.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut Assigné des Canvas de type différents.
    Bonjour à tous,

    Ma question, concèrne l'impression de mon projet en générale...J'aimerais savoir si il est possible d'utiliser la fonction "assign" ou une astuce équivalente afin de passer le canvas de ma paintbox au MetafileCanvas(pour le redimentionnement et l'exportation vers le presse-papier) ou/et vers le Canvas du Priter (pour l'impression).

    Actuellement j'ai un message d'erreur du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible d'assigner TcontrolCanvas à TPrinterCanvas...
    Merci pour votre aide,

    A+.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Si la fonction assign ou assignto des deux classes n'est pas prévu, c'est fort difficile, sinon, reste toujours le passage via un TBitMap temporaire ? cela reste le format le plus "standard" qui doit pouvoir être utiliser comme intermédiaire
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    A noter que l'objet canvas possede une var Handle modifiable.

    On peut donc creer dynamiquement un objet TCanvas, lui affecter un handle graphique et manipuler ce canvas.

    Il ne me semble donc pas impossible de lier 2 canvas a la meme zone graphique en affectant les handles.

    Sinon dans ton cas, peut etre qu'un simple copyrect ou strechdraw d'un canvas sur l'autre devrais faire l'affaire pour copier le contenu d'un canvas sur l'autre.

    Les property ne sont pas copiées, mais le contenu du canvas (dessin) oui. Ce qui me semble est l'essentiel ....

  4. #4
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Merci pour ta réponse,

    mais j'avoue avoir du mal avec tout ce qui est draw...
    Voici mon code, pour que vous compreniez mon blocage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If printdialog1.Execute then
      Begin
        Printer.Orientation := poLandscape;
        aRect.Right:= Printer.PageWidth;
        aRect.Bottom:= Printer.PageHeight;
        aRect.Left:= 0;
        aRect.Top:= 0;
        Printer.BeginDoc;
        Printer.Canvas.StretchDraw(aRect,PaintBox1.????); => ici on me demande un TGraphic
        Printer.EndDoc;
      End;
    Merci encore pour le temps passé à étudier mon problème,

    A+.

  5. #5
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Printer.Canvas.StretchDraw(aRect, bmp);
    ... ça marche avec un bmp TBitMap, et pour créer ce BitMap suffit de le créer au préalable en traçant dessus la même chose que sur ta PaintBox1 c'est à dire avec un routine qui contient des instructions quasiment identiques à celles de ta méthode onPaint du PaintBox1. D'ailleurs pour me simplifier la vie je crée toujours le bmp indépendamment du truc sur lequel je veux ensuite l'utiliser ce qui me permet d'envoyer le bmp sur n'importe quel canvas : canvas du printer, canvas d'une image ... ou de l'envoyer dans le presse-papier avec Clipboard.Assign(Bmp) ... c'est à dire que j'utilise le bmp dans l'univers de l'image comme on ballade un String d'un endroit à l'autre dans l'univers du texte et des caption, et quand Finally on n'en a plus besoin alors Bmp.Free.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Effectivement, d'habitude j'écris directement sur mon Canvas (passé en paramètre de ma fonction dessin).

    Le problème c'est que mon prédécésseur à dessiner des objets sans utiliser de facteur d'échelle, et pour éviter de refaire toutes ses fonctions, j'aurais préféré la méthode: récupérer le canvas de ma paintbox, l'agrandir par strechdraw et le copier dans mon Printer.

    Mais si cela est impossible, alors je vais me lancer dans la reprise de code...

    Merci pour votre aide,

    A+.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. créer une table avec des colonnes de types différents
    Par d_hazem dans le forum Composants
    Réponses: 1
    Dernier message: 15/01/2009, 15h23
  2. Jointure entre 2 tables avec des champs de types différents
    Par qltmi dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 27/11/2008, 20h58
  3. itération sur des objets de types différents ?
    Par jc63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/09/2007, 08h19
  4. Réponses: 7
    Dernier message: 13/03/2006, 08h56
  5. stocker des valeurs de type différent
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 28/11/2005, 09h36

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