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

VB.NET Discussion :

Graphismes avec accélération matérielle


Sujet :

VB.NET

  1. #1
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 932
    Points : 1 267
    Points
    1 267
    Par défaut Graphismes avec accélération matérielle
    Bonjour à tous,

    tout le monde l'a remarqué : le graphisme 2D n'est pas très rapide avec VB qu'il s'agisse de VB5 ou de VB.NET

    (et la 3D fait maison ... ... même si c'est intéressant de faire soi-même un programme qui fait de la projection 2D)

    Pour revenir à la 2D : un logiciel de dessin fait en VB5 reste lent même sur une machine moderne, tandis que d'autres programmes du même style sont plus rapides... Comment faire pour faire de la 2D rapide, en VB5 et en VB.NET ? En effet d'après mes recherches, ni GDI ni GDI+ ne font bénéficier de la puissance réelle de l'ordinateur

    Pour la 3D des solutions OpenGL ou DirectX existent, et il y a plein de ressources sur le sujet ; d'ailleurs question à ceux qui ont déjà pratiqué : quelle solution et quelle version préférez-vous, pour VB5 ou pour VB.NET ?

    Merci et A+
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    En vb.net, Il me semble que "CachedBitmap" est significativement plus rapide que "Bitmap".
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    en vb.net il y a 2 types de .exe possible

    les exe windows forms utilisent gdi et gdi+ comme vb6, et en effet ca n'utilise que le processeur, et pour certaines choses il faut faire du code complexe pour avoir un peu de performances

    depuis 2008 on peut aussi faire un exe WPF
    WPF est une tout autre technologie qui n'utilise pas les controles de windows, et cette technologie se base sur directX, et utilise donc l'accélération matérielle
    de plus on peut faire un peu de 3d en wpf (que ca soit du dessin, ou de la disposition de controles)

    sinon il y a un logiciel d'édition d'image un peu connu qui s'appelle paint.net, celui ci doit être codé en wpf, mais il me semble qu'avant il était codé en windows forms, et dans les 2 cas il est assez performant, donc ca reste faisable
    (par contre je ne vois pas l'utilité de parler de vb5 de nos jours)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 932
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    WPF est une tout autre technologie qui n'utilise pas les controles de windows, et cette technologie se base sur directX, et utilise donc l'accélération matérielle
    de plus on peut faire un peu de 3d en wpf (que ca soit du dessin, ou de la disposition de controles)
    Oui j'ai commencer à m'intéresser au WPF... j'ai pas encore tout compris y'a des choses qui m'échappent

    La question :
    - est-ce qu'en WPF je dois refaire toute l'application ?
    - ou bien est-il possible d'avoir du WPF dans un programme VB.NET normal ?
    - ou bien est-il facile de convertir un programme VB.NET normal en WPF (c'est à dire récupérer le code VB.NET) ?

    Citation Envoyé par Pol63 Voir le message
    (par contre je ne vois pas l'utilité de parler de vb5 de nos jours)
    Si, pour la maintenance et l'évolution d'un gros logiciel fait en VB5 il y a 15 ans et qui est toujours utilisé aujourd'hui Refaire cette application en VB.NET qui a de nombreuses fenêtres très complexe, demanderais des mois de travail...
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Citation Envoyé par electroremy Voir le message
    Pour la 3D des solutions OpenGL ou DirectX existent
    DirectX est utilisable pour la 2D et avec vb5.

    Citation Envoyé par electroremy Voir le message
    Si, pour la maintenance et l'évolution d'un gros logiciel fait en VB5 il y a 15 ans et qui est toujours utilisé aujourd'hui Refaire cette application en VB.NET qui a de nombreuses fenêtres très complexe, demanderais des mois de travail...
    Quel type d'application ?
    Sinon on peut utiliser des DLL vb.net avec vb6, on peut probablement le faire avec vb5. (il y a des discussions à ce sujet sur le site, il doit même y avoir un tuto)
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    Citation Envoyé par electroremy Voir le message
    - est-ce qu'en WPF je dois refaire toute l'application ?
    ca dépend

    Citation Envoyé par electroremy Voir le message
    - ou bien est-il possible d'avoir du WPF dans un programme VB.NET normal ?
    on mettre des usercontrols wpf dans une appli windows forms et réciproquement
    par contre quand on utilise du wpf dans du windows forms, l'accélération matérielle n'est pas utilisée

    Citation Envoyé par electroremy Voir le message
    - ou bien est-il facile de convertir un programme VB.NET normal en WPF (c'est à dire récupérer le code VB.NET) ?
    pas automatiquement


    en fait le code non graphique peut etre repris sans problème, par contre wpf oblige (en théorie) à ne pas lier le code des données et traitements à l'interface graphique
    si tu as bien découpé ton programme windows forms alors tu pourrais repartir sur du wpf en gardant le même code et en refaisant l'interface graphique
    mais bon ca reste du redéveloppement
    en windows forms on écrit souvent me.label1.Text = "machin"
    en wpf ceci est à proscrire (sauf exception ^^)
    on écrit des classes pour contenir les données et faire les traitements
    on écrit des classes qui vont servir de lien entre ces classes de données et l'interface
    et dans l'interface (en xaml) on ne fait que du binding (vers les données ou même vers les "sub" pour le clic des boutons)
    en windows forms quand on peut ajouter un élément dans une collection, puis l'ajouter dans un listbox par exemple, en wpf on ajoute simplement l'objet à la collection et via les bindings il est automatiquement ajouté au listbox


    Citation Envoyé par electroremy Voir le message
    Si, pour la maintenance et l'évolution d'un gros logiciel fait en VB5 il y a 15 ans et qui est toujours utilisé aujourd'hui Refaire cette application en VB.NET qui a de nombreuses fenêtres très complexe, demanderais des mois de travail...
    en passant de vb6 à vb.net si on maitrise vb.net et la POO on divise le nombre de ligne de code par 10 (et un peu plus avec wpf) donc ca se fait
    (en quelques mois certes, mais pas en 3 ans non plus)
    une fenetre de saisie par exemple, une fois que tu as fais un moteur de saisie, tu peux faire une fenetre de saisie en moins de 5 minutes, donc en faire 100 facilement
    pareil pour une fenetre d'affichage
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 932
    Points : 1 267
    Points
    1 267
    Par défaut
    Merci pour ces renseignements, je cerne mieux la chose maintenant !

    En fait mon soucis, c'est que mon code est assez lié à l'interface; quand on fait un logiciel de type DAO c'est pas évident

    Citation Envoyé par Pol63 Voir le message
    en passant de vb6 à vb.net si on maitrise vb.net et la POO on divise le nombre de ligne de code par 10 (et un peu plus avec wpf) donc ca se fait
    (en quelques mois certes, mais pas en 3 ans non plus)
    une fenetre de saisie par exemple, une fois que tu as fais un moteur de saisie, tu peux faire une fenetre de saisie en moins de 5 minutes, donc en faire 100 facilement
    pareil pour une fenetre d'affichage
    le soucis c'est que le programme en question a plein de fenêtres qui sont complexes et différentes c'est la magie de la DAO

    y'aurais que de la saisie de données textes et de l'affichage de texte et/ou de graphiques ça serait moins coton

    Vouloir bien séparer le code de l'interface c'est un voeux que je fais souvent mais le respecter c'est une autre paire de manche. Ou alors, comme tu l'as dit, il faut des classes spéciales pour faire le lien, j'avais tenté un truc du genre mais si les classes liées au traitement de données deviennent indépendantes de l'interface, tout le reste reste lourd et au final y'a autant voire plus de lignes de code.

    A+
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  8. #8
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 932
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par Graffito Voir le message
    En vb.net, Il me semble que "CachedBitmap" est significativement plus rapide que "Bitmap".
    Je n'arrive pas à créer un objet de type CachedBitmap en VB.NET, pourtant j'ai le framework 4.5

    L'espace de nom System.Windows.Media.Imaging.CachedBitmap n'est pas reconnu à partir de Media

    En faisant des recherches sur le net je ne trouve que des codes qui ont été utilisés par des gens ayant un framework ancien, bizarre j'ai dû loupé un truc
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    system.windows.media c'est dans wpf, si tu es sur un projet windows forms c'est normal qu'il t'affiches une erreur, les dlls wpf ne sont pas en référence par défaut sur un projet windows forms
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 932
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    system.windows.media c'est dans wpf, si tu es sur un projet windows forms c'est normal qu'il t'affiches une erreur, les dlls wpf ne sont pas en référence par défaut sur un projet windows forms
    Je viens de trouver, effectivement, dans le projet, dans les références il faut ajouter PresentationCore.dll puis l'espace de nom System.Windows.Imaging

    Je vais voir ce que ça donne...
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

  11. #11
    Membre éprouvé Avatar de electroremy
    Homme Profil pro
    Ingénieur sécurité
    Inscrit en
    Juin 2007
    Messages
    932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 932
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par Graffito Voir le message
    En vb.net, Il me semble que "CachedBitmap" est significativement plus rapide que "Bitmap".
    Graffito, as tu déjà utilisé un CachedBitmap en VB.NET ?

    Je n'arrive pas à récupérer un Cached Bitmap à partir de la picture box, le code suivant renvoie une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Image3D_cbm As CachedBitmap
    ...
    Image3D_cbm = New CachedBitmap(System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(Visu3D2.Image3D.Handle, IntPtr.Zero, New System.Windows.Int32Rect(0, 0, Visu3D2.Image3D.Width, Visu3D2.Image3D.Height), BitmapSizeOptions.FromEmptyOptions), BitmapCreateOptions.None, BitmapCacheOption.OnLoad)
    Et pour la suite, comment :
    - dessiner sur le CachedBitmap ?
    - afficher le contenu du CachedBitmap dans la PictureBox ?

    En cherchant je ne tombe que sur des trucs en anglais fait avec C#, c'est très opaque pour moi, je n'arrive à trouver aucun exemple correspondant à ce que je veux faire (dessiner et non pas afficher un JPG)

    Ca me fait penser à mes premiers pas en .NET, quand je suis passé de VB5 à VB.NET et où j'ai mis une semaine à comprendre comment dessiner une ligne dans une image

    (d'ailleurs c'est une vrai vacherie pour les débutants en programmation d'aujourd'hui, la prise en main de VB.NET pour le graphisme est beaucoup plus ardue que VB5/VB6 alors que la performance est pas forcément au rendez-vous)
    Quand deux personnes échangent un euro, chacun repart avec un euro.
    Quand deux personnes échangent une idée, chacun repart avec deux idées.

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/11/2006, 12h36
  2. graphisme avec visual
    Par zieg18 dans le forum MFC
    Réponses: 5
    Dernier message: 15/07/2006, 00h03
  3. Plantage accélération matérielle
    Par Azharis dans le forum Composants
    Réponses: 2
    Dernier message: 31/05/2006, 21h45
  4. Se connecter à Internet avec du matériel Wi-Fi
    Par mat.M dans le forum Hardware
    Réponses: 5
    Dernier message: 03/01/2006, 13h10
  5. Graphismes avec Visual C++
    Par altobar dans le forum MFC
    Réponses: 13
    Dernier message: 05/09/2005, 12h33

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