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

C++Builder Discussion :

Problème de rendu 2D


Sujet :

C++Builder

  1. #1
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut Problème de rendu 2D
    Bonjour à tous,

    Je viens ici pour avoir un petit conseil concernant le projet que je suis en train de réaliser. Celui-ci consiste à faire de la reconnaissance d'écriture manuscrite en ligne, c'est-à-dire à numériser l'écriture par analogie à une base de caractères déjà pré-digérés (pour le moment, il s'agit uniquement d'écriture non-cursive). Je travaille depuis quelques semaines à la conception d'un réseau de neurones qui sera en fait le moteur de la reco, je voudrais faire quelques essais avec borland c++ builder 6 mais j'ai un gros problème de rendu au niveau de l'écriture elle-même.
    Je précise que pour le moment, j'écris à partir d'une tablette graphique (qui contrôle la souris).

    J'ai fait les essais suivants :

    - dessin sur TPaintBox (sur évènements OnPaint, OnMouseMove, OnMouseDown, OnMouseUp)

    - dessin sur TMetafile, puis stretchdraw sur le canvas de TPaintBox (évènements idem).

    Malheureusement, aucune de ces solutions ne me satisfait, malgré le DoubleBuffered=true j'ai un scintillement affreux au moment du rafraichissement qui s'aggrave avec le nombre d'objets dessinés... L'écriture n'est donc pas fluide mais perturbée par des flashs.
    J'ai donc essayé de déclencher le rafraichissement de l'affichage par thread en arrière plan mais ça ne change rien.

    Ainsi, je suis à la recherche d'un outil plus conséquent pour réaliser ce travail, dois-je m'orienter vers un moteur de rendu 2D (je pense à OpenGL), si quelqu'un a une idée, je suis preneur ?

    Cordialement

    Freeze

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Freeze
    Je suis dans le meme cas que toi impossible de tracer sur un TImage sans sintillement DoubleBuffered ne m'aide pas, je n'ai pas encore essaye mais je me demande si l'on utilisait un TForm pour dessiner, on peut ecrire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Form1->DoubleBuffered = true;
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    jette un coup d'œil vers cette URL qui propose un composant que devrait peut-être de tirer d'affaire
    http://old.allanpetersen.com/opengl.htm
    cdlt
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  4. #4
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 123
    Points : 93
    Points
    93
    Par défaut
    OnMouseMove, OnMouseDown, OnMouseUp doivent déclencher PaintBox->Invalidate(). Il ne faut dessiner que dans OnPaint.

    Après oui, OpenGL serait plus adapté si l'affichage devient très lourd, et pour gérer l'anti aliasing.

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    Il y avait des composant hyper optimisés pour le dessin (Graphic32 library), vraiment très impressionnants. Je ne sais pas s'ils sont toujours disponibles mais ça vaut le coup de chercher.
    L'inconvénient de cette librairie est qu'elle utilise ses propres classes d'images (compatibles avec TGraphic ?).

    Sinon quelques les éléments de base pour optimiser le rafraichissement d'un TPaintBox sont:
    - double-buffering
    - si possible ne pas rafraichir toute la fenêtre pour redessiner mais utiliser la fonction InvalidateRect pour ne rafraichir que la partie à redessiner, et dans ce cas tenir compte du carré demandé dans le OnPaint.
    - override du OnEraseBackground (qui provoque le flicker car il efface le fond avant le redessin) => cela suppose un composant custom

Discussions similaires

  1. stockage page web dans mysql : problème de rendu
    Par circajet7 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 29/03/2007, 10h25
  2. Problèmes de rendu incongru
    Par jacquesprogram dans le forum Flash
    Réponses: 14
    Dernier message: 01/10/2006, 11h50
  3. Problème de rendu 16 bits float + MSAA
    Par gybe dans le forum DirectX
    Réponses: 10
    Dernier message: 10/08/2006, 16h24
  4. [wxPython] problème de rendu
    Par tool69 dans le forum wxPython
    Réponses: 5
    Dernier message: 25/09/2005, 19h43
  5. Problème de rendu 2D
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 04/08/2004, 21h47

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