none
Différence de rendu entre les fonctions graphiques en C et celles en VB.Net RRS feed

  • Discussion générale

  • La conversion d'un programme écrit en C vers une version en VB.Net me confronte aux problèmes suivants.

    1- Pour les cercles et les rectangles, a l'affichage, la grosseur est plus petite en VB qu'en C.  Pour valider le problème j'ai  créé 3 PictureBox auquel j'ai associé une fonction.  Le code (partiel) utilisé est le suivant:

          x = 100
          y = 100
          W = 10
          H = 10

         Crayon = CreatePen(0, 1, Couleur)
         SelectObject(HdcPB, Crayon)
         Ellipse(HdcPB, x, y, x + W, y + H)

         Dim Crayon2 As New Pen(Color.Black, 1)
         MonGraph.DrawEllipse(Crayon2, x, y, W, H)    

         Dim Pinceau As New New SolidBrush(Color.Black)
         MonGraph1.FillEllipse(Pinceau , x, y, W, H)

    La fonction Ellipse demande de fournir le coin supérieur gauche et le coin inférieur droit.  Les fonctions VB demandent aussi de fournir le coin supérieur gauche mais, cette fois, la hauteur et la largeur de l'ellipse ce qui ramène au coin inférieur droit .   Est-il possible que les unités graphiques ne soient pas les mêmes en C et en VB (ex.: Pixel vs Twips)?
    Si c'est le cas, comme faire pour compenser?

    2- Le programme utilise un fichier GERBER (circuit imprimé) contenant plusieurs dizaines de milliers de lignes de coordonnées.  En C, l'affichage est visuellement instantané alors que sa version VB peut prendre de 2 a 3 secondes          ( j'ai le temps de voir les éléments se dessiner).  Sauf pour les fonctions graphiques, c'est le même code qui récolte les coordonnées et génère l'affichage.  J'ai aussi tenté d'inclure les fonctions C (gdi32.dll) au code VB.  J'ai la vitesse, mais quelquefois il manque une partie du dessin.  C'est comme si:
        a) dans le cas du code VB pur, la traduction vers les instructions machines cause un décalage, ce qui ralentirais l'affichage.
        b) dans le cas ou du C est inclus, le code s'exécute trop rapidement et VB a du
        mal a le bouffer, ce qui cause les manques.
    Des suggestions?

    lundi 5 octobre 2015 11:19

Toutes les réponses

  • Bonjour, PifoModif,

    Pourriez-vous illustrer le problème avec une capture d’écran ? Est-ce que la différence est aussi visible quand vous passez en paramètres W et H des chiffres plus grands (> 100) ?

    Cordialement,
    Dimitar

    mardi 6 octobre 2015 11:16
    Modérateur
  • Bonjour Dimitar,

    J'ai trouvé ce qui causait mon problème de différence de grosseur.  Le code sur lequel je travaille a subit plusieurs brassages, le paramètre PageUnit était configuré sur  GraphicsUnit.Point.

    Pour mon deuxième problème, une idée?

    Merci,

    Pifomodif

    mardi 6 octobre 2015 15:37