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

Composants VCL Delphi Discussion :

Plus rapide que TPaintBox


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut Plus rapide que TPaintBox
    Salut tout le monde,

    j'ai un progamme qui trace pas mal de chose dans une paintbox. et le problème que j'ai, c'est cque c est long et que sa "saute" meme avec le doublebuffer.

    J'aurais voulu si il existait un composant simlaire a la paintbox mais qui serait plus rapide et peut etre accéléré par le biais de directX ou openGl.

    Cordialement

  2. #2
    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
    Reste a savoir si le "dessin" est effectué par le logiciel ou bien par l'utilisateur (dessin dynamique selon la souris)

    Si c'est l'application qui dessine elle meme, il y a moyen d'accelerer le processus en dessinant directement dans la memoire, puis copier le "rendu" sur la TPaintBox.

    Dessiner sur un TBitmap Memoire est plus rapide (beaucoup plus rapide) car il n'as pas besoins de raffraichir systematiquement le canvas.

    Une alternative equivalente serais de dessiner en permanace dans la memoire et effectuer un rendu ecran periodique a la maniere des moteurs 3D.

    Reste a savoir ce que tu veux faire exactement.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    beh le seul truc que je sais c est que je veux pas me prendre la tete.

    Je m'explique mon appli est deja écrite et je ne veux pas la recoder en entier; donc si le nouveau composant a les meme fonctions ( a peu de chose prés) que la paintbox je dis pas non.

    Aprés je voudrais que la gestion soit plus rapide au niveau du dessin (c'est l'appli qui dessine).

    Et évidement s'il y a des fonctions native du style zoom ou anti aliasing, je suis preneur .

    j'ai regadé du coté de graphic32 et graphicex .

    T'en pense quoi ?

  4. #4
    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
    On ne dessine pas directement sur le PaintBox mais sur le Canvas (TCanvas) du paintBox

    TBitmap possede une variable TCanvas donc il n'y a pas de soucis.
    Il te suffit de manipuler le canvas du bitmap au lieu du canvas du PaintBox.
    La mise en parametre d'une variable Canvas dans les fonction de dessin serait un bon choix technique.

    Pour le rendu sur le paintbox, une copie (ou assign) du canvas du bitmap vers le canvas du paintbox en temps voulut devrais suffire.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut
    la librairie G32 est absolument ultime et imbattable -hors DirectX, donc nettement plus legere- je la conselle fortement pour tout ce qui est traitement d'image 2D.

    http://graphics32.org/wiki/

  6. #6
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Par défaut
    et pour ce qui est de l impression ? c'est facile avec graphic32 ?

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Citation Envoyé par Clorish Voir le message
    Pour le rendu sur le paintbox, une copie (ou assign) du canvas du bitmap vers le canvas du paintbox en temps voulut devrais suffire.
    Salut tout le monde,

    Je viens interférer un peu ce fil qui n'est pas le mien, mais si je pouvais avoir un ch'tit exemple de la mise en application de la citation ci-dessus, ça m'aiderait, car quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PaintBox.Canvas.Assign(Buffer.Canvas);
    , je gagne "une classe d'exception EConvertError avec le message 'Impossible d'affecter TBitmapCanvas à TControlCanvas'." !

    C'est désagréable, ces trucs,

    Merci d'avance,
    --
    jp

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Bon pardon a mon tour de m'insérer dans la conversation mais...

    Ceci ne conviendrait-il pas pour répondre a ton problême de transtypage!

    bon on a déja une paintbox quelque part ... PoC...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    procedure toto;
    var
    Buffer:TBitMap;
    begin
    Buffer:=TBitMap.Create;
    Buffer.Width:=PaintBox1.Width;
    Buffer.Height:=PaintBox1.Height;
    // ici on fait des trucs et des machins pour dessiner dans le buffer
    // et ensuite...
    PaintBox1.Canvas.Draw(0,0,Buffer);
    end;
    Alors je ne sais pas si c'est très rapide mais ca marche...

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 160
    Par défaut
    Bon pardon a mon tour de m'insérer dans la conversation mais...

    Ceci ne conviendrait-il pas pour répondre a ton problême de transtypage!

    bon on a déja une paintbox quelque part ... PoC...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure toto;
    var
    Buffer:TBitMap;
    begin
    Buffer:=TBitMap.Create;
    Buffer.Width:=PaintBox1.Width;
    Buffer.Height:=PaintBox1.Height;
    // ici on fait des trucs et des machins pour dessiner dans le buffer
    // et ensuite...
    PaintBox1.Canvas.Draw(0,0,Buffer);
    Buffer.free;
    end;
    Alors je ne sais pas si c'est très rapide mais ca marche...

    Oups pardon pour le double post, je voulais juste rajouter un free a la fin... j'ai voulut faire un edit mais j'ai loupé mon coup

  10. #10
    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
    Citation Envoyé par Jipété Voir le message
    Salut tout le monde,

    Je viens interférer un peu ce fil qui n'est pas le mien, mais si je pouvais avoir un ch'tit exemple de la mise en application de la citation ci-dessus, ça m'aiderait, car quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PaintBox.Canvas.Assign(Buffer.Canvas);
    , je gagne "une classe d'exception EConvertError avec le message 'Impossible d'affecter TBitmapCanvas à TControlCanvas'." !
    Visiblement le canvas de TPaintBox n'ets pas du meme type que celui du TBitmap. donc l'assignation n'ets pas possible.
    J'imagine qu'ils doivent avoir des fonctiosn differentes, vu que l'un interface un controle sur l'ecran, l'autre est directement lié a un handle de type HDC (graphique) ....
    A approfondir.

    Note sur le Assign : Cette methode permet de recopier le contenu d'une classe dans une autre, a conditions que les regles d'heritages soient respectees.

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

Discussions similaires

  1. Access plus rapide que SQL server ????? (débutante)
    Par 24 faubourg dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 21/12/2005, 17h36
  2. [D7] composants plus rapides que dbExpress pour Oracle 8i
    Par Magnus dans le forum Bases de données
    Réponses: 2
    Dernier message: 10/10/2005, 12h06
  3. Plus rapide que bresenham ?
    Par mathieu_t dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/06/2005, 13h28
  4. [VB6] timer plus rapide que 1 d'interval
    Par windob dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/02/2004, 00h16
  5. Réponses: 8
    Dernier message: 31/10/2003, 16h21

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