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 :

Graphic et Bitmap [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Points : 77
    Points
    77
    Par défaut Graphic et Bitmap
    Bonjour à tous,
    Je cherche à modifier la couleur de certains points du Graphic, correspondant à ma fenêtre,obtenu par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphe = Form_Ar.CreateGraphics
    La méthode Drawline(Pen,P1,P1) ne semble pas fonctionner sur un seul point.
    J’utilise pour l’instant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Graphe.DrawLine(Pen, P1, P2)
    qui ne me satisfait pas puisqu’elle colore au minimum 2 points. J’envisage d’utiliser la méthode DrawImage(Image,Point) à partir d’images constituées d’un seul point avec toutes les teintes dont j’ai besoin. Vous allez me dire que c’est encore du bricolage et vous avez raison.

    Il y a bien les méthodes GetPixel et SetPixel d’un Bitmap mais je ne sais pas comment les appliquer au travers du Graphic qui, lui-même, fait référence au Bitmap de la fenêtre.

    Pouvez-vous me renseigner sur ce point.
    Comment passer du Graphic au Bitmap de la fenêtre et inversement. Tout ce que j’ai lu parle de l’un ou de l’autre mais pas de l’association des 2.
    Ou alors comment puis-je travailler directement sur le Bitmap de ma fenêtre.
    Ou alors encore j’ai raté quelque chose. Quoi ?

    Pol63 a dit un jour :
    getpixel/setpixel sont très lents, sur du 100x100 ça devrait aller, si tu veux plus de perfs il faudra passer par la récupération des octets puis travailler sur eux (lockbits, marshalling etc...).
    Ma fenêtre fait 600x600 mais je dois uniquement changer les couleurs de 2 point par tic de métronome (intervalle=50 ms). J’espère que ça suffira. Je ne peux pas actuellement me consacrer à ces notions (lockbits, marshalling etc...). Je verrai plus tard.

    Merci
    Mille jours d’entraînement pour forger, dix milles jours d’entraînement pour polir.
    Shimen Musashi - Gorin-no-sho Rouleau de l’eau

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu peux essayer le drawellipse pour voir si c'est mieux que drawline

    sinon il reste la possibilité de faire un bitmap en fond, si tu as 2 pixels à changer pas de soucis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    private _b as New Bitmap(600, 600)
     
    public sub new
      InitializeComponent
      me.backgroundimage = _b
      me.backgroundimagelayout = ImageLayout.None
    end sub
     
    private Sub ... (...) handles Timer1.Tick
      _b.setpixel (x,y,couleur)
      me.invalidate
    end sub
    ici on créé un variable bitmap
    dans le sub new (équivalent du form_load en mieux) on le met en fond
    sur le tick on change un pixel, puis on dit à la form de se rafraichir (via invalidate), le bitmap est donc redessiné

    après si tu veux dessiner sur ton bitmap, tu peux créer un graphics lié à ce bitmap (graphics.fromimage(_b)), tout ce qui est draw sur le graphics l'est en fait sur le bitmap
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Points : 77
    Points
    77
    Par défaut
    Si j'ai bien compris, je crée un Bitmap, je le mets en image de fond dans ma fenêtre, je change mon pixel au tic du métronome et je rafraîchis l'affichage de la fenêtre par Invalidate().

    Au départ ma fenêtre est blanche, si je lui mets en image de fond un Bitmap sans l'avoir rempli que vais-je obtenir ? Quel est son contenu par défaut ?Faut-il que je crée en ressource un Bitmap blanc de 600x600 ?
    La fenêtre sera "rafraîchie" une centaine de fois par seconde, cela risque-t-il de créer des problèmes ?

    Pour info je viens de rebâtir mon projet avec une programmation par évènements, auquel j'ai ajouté un Dictionnary pour gérer mes objets. Ca fonctionne, j'ai actuellement 4 cellules qui se promènent dans ma fenêtre à des vitesses différentes. Je vais pouvoir attaquer la partie multiplication et disparition.

    Encore merci pour tous ces conseils qui me permettent d'avancer dans mon projet
    Mille jours d’entraînement pour forger, dix milles jours d’entraînement pour polir.
    Shimen Musashi - Gorin-no-sho Rouleau de l’eau

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par horemheb Voir le message
    Au départ ma fenêtre est blanche, si je lui mets en image de fond un Bitmap sans l'avoir rempli que vais-je obtenir ? Quel est son contenu par défaut ?
    pourquoi ne pas essayer plutot que de poser la question, c'est une perte de temps ...
    je pense que c'est noir, mais tu peux via un graphics faire .clear(white)

    Citation Envoyé par horemheb Voir le message
    Faut-il que je crée en ressource un Bitmap blanc de 600x600 ?
    créer une ressource ou lire un fichier, ca permettra d'obtenir une variable bitmap, donc peu d'utilité vu qu'on peut en faire une avec une ligne de code, après si tu ne veux pas faire un graphics.Clear(white) tu peux en effet mettre l'image en ressource

    Citation Envoyé par horemheb Voir le message
    La fenêtre sera "rafraîchie" une centaine de fois par seconde, cela risque-t-il de créer des problèmes ?
    le timer a à priori une précision de 16ms, donc pas en dessous donc tu sera au alentour de 60 images secondes
    de toute facon l'oeil ne voit pas à 100 hertz ...
    il reste les threads si tu veux passer en dessous de 16ms

    là aussi tu peux tester pour voir ce que ca donne
    tu peux aussi utiliser le system.diagnostics.stopwatch (un chronomètre) pour mesurer le temps d'exécution entre 2 points
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier Avatar de horemheb
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2010
    Messages : 122
    Points : 77
    Points
    77
    Par défaut
    Merci, je vais avoir de quoi m'occuper quelques temps
    Salutations
    Mille jours d’entraînement pour forger, dix milles jours d’entraînement pour polir.
    Shimen Musashi - Gorin-no-sho Rouleau de l’eau

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

Discussions similaires

  1. [Débutant] Aide sur les graphics associés à bitmap
    Par chekito07 dans le forum VB.NET
    Réponses: 3
    Dernier message: 02/01/2014, 09h36
  2. [Novice] Graphics et Bitmap
    Par luckylucas dans le forum C#
    Réponses: 6
    Dernier message: 28/11/2010, 22h33
  3. Graphics et Bitmap
    Par CARNIBAL dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 24/03/2009, 13h19
  4. [C#] Obtenir bitmap à partir de Graphics
    Par Hurin dans le forum C#
    Réponses: 9
    Dernier message: 18/09/2008, 18h20
  5. [C#] objet graphics dans une bitmap
    Par lancer83 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/08/2006, 14h30

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