Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2180 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  VC++.net (2003) et les Graphics/PictureBox

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

VC++.net (2003) et les Graphics/PictureBox

n°2026058
kowalski
Posté le 30-09-2010 à 07:34:26  profilanswer
 

Bonjour a tous,
 
Suite a un probleme de compatibilite de librairies, je dois quitter VB pour venir a VC++. Je developpe un appli avec un GUI et c'est la premiere fois (j'ai fait beaucoup de C/C++ mais pour des applis console).
 
J'etais arrive sans trop de souci a creer un picture box et modifier des pixels sous VB.
Mais avec VC++ je n'y arrive pas.  
 
J'essaie de creer un graphics, que je lie au picture box, je dessine puis je refresh, mais rien a faire !
 
Quelqu'un a une idee ?
 

Code :
  1. Graphics* g;
  2.             Color black = Color::Black;
  3.             g = PictureBox1->CreateGraphics();
  4.             Pen* blackPen = new Pen(black);
  5.             PictureBox1->BackColor = Drawing::Color::White;
  6.             g->DrawLine(blackPen, 100, 100, 400, 400);
  7.             PictureBox1->Refresh();


 
(desole pour les accents, clavier US)

mood
Publicité
Posté le 30-09-2010 à 07:34:26  profilanswer
 

n°2026071
olivthill
Posté le 30-09-2010 à 10:03:58  profilanswer
 

Peut-être que g n'est pas bon.
Il faut que cela vienne du paint event handler, ce qui ne semble pas être le cas ici.
Voir l'exemple http://msdn.microsoft.com/en-us/library/xckcwxsa.aspx
 
En plus, il ne faut pas raffraichir, car sinon, selon l'endroit ou le dessin est fait, le dessin est écrasé, ou bien il est dessiné deux fois, ou encore il est redessiné une infinité de fois.
 
D'une manière générale, sous Windows, il existe un bon et un mauvais moment pour dessiner.
Le bon moment, c'est quand Windows gère le message WM_PAINT qui est au coeur de la gestion des fenêtre Windows, et qui, au niveau supérieur, s'appelle le paint event handler.
Le mauvais moment, c'est en dehors du cas précédent.
Il existe un paint event handler par fenêtre (le mot fenêtre peut désigner une fenêtre ordinaire, ou un bouton, ou autre chose). Chaque fenêtre est identifiée par son handle (handle != handler). En C++, les handle sont implicites. Ils dépendent de l'objet concerné par le contexte.
 
De plus, il faut aussi se méfier du système de coordonnées, car parfois l'unité est le pixel, et parfois l'unité est autre chose, donc quand on écrit x=100 on peut se retrouver parfois hors des limites.

n°2026075
kowalski
Posté le 30-09-2010 à 10:22:30  profilanswer
 

Je n'ai pas trop peur de mon systeme de coordonnees pour mon application. Ici c'est bien le pixel.
 
Pour le reste, sais tu s'il y a de grosses differences entre .NET 2003 et .NET 2005 sur le sujet des graphics/picturebox?
 
Par exemple, j'essaie d'appliquer les tutos msdn les declarations telles que :  
 
      Graphics^ g = e->Graphics;
 
Ne compilent pas. (ainsi que gcnew qui sont souvent utilisees dans leur tuto)
 
Ah lala... c'etait pourtant si simple avec vb.net :'(

n°2026082
olivthill
Posté le 30-09-2010 à 10:48:32  profilanswer
 

Non, il n'y a pas de différence pour cela.
 
L'exemple avec la Picture Box est http://msdn.microsoft.com/en-us/li [...] phics.aspx
En bas, il est noté que cela marche avec les versions 4, 3.5, 3.0, 2.0, 1.1, 1.0. Donc, c'est du super basic.
 
Quels sont les messages d'erreur ?
 
Il doit y avoir un problème de paramétrage pour la compilation.
 
Parfois, il arrive que les exemples de la doc MSN soient buggués, mais c'est rare.

n°2026125
kowalski
Posté le 30-09-2010 à 13:42:10  profilanswer
 

Si je fais du simple cut and paste..
 
Visual Studio Projects\a\a\Form1.h(1287) : error C2065: 'gcnew' : undeclared identifier
Visual Studio Projects\a\a\Form1.h(1301) : error C2143: syntax error : missing ';' before '^'
Visual Studio Projects\a\a\Form1.h(1304) : error C2065: 'g' : undeclared identifier
Visual Studio Projects\a\a\Form1.h(1287) : error C2039: 'PictureBox1_Paint' : is not a member of 'a::Form1'
 
Le ^ est utilise dans l'exemple pour :
Graphics^ g = e->Graphics;
 
 

n°2026158
olivthill
Posté le 30-09-2010 à 15:14:10  profilanswer
 

Il faudrait que PictureBox1_paint soit un membre de Form1. Comment et à quel endroit est déclaré PictureBox1_paint ?
 
Est-ce que dans les options du projet, il y a bien Common Language Runtime Support ?

n°2026163
kowalski
Posté le 30-09-2010 à 15:34:26  profilanswer
 

Comme je vais devoir filer, je voulais juste te donner les derniers "improvements"
 
 - J'avais deja une erreur de majuscule sur PictureBox1_paint... Pas joyeux.
 - En changeant les ^ en *... Ca compile mais...
 
Ca ne dessine rien.
 
Je regarderai pour CLR. pour le moment je ne sais pas te dire !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  VC++.net (2003) et les Graphics/PictureBox

 

Sujets relatifs
passage office 2003 2007VBA Excel 2003 Problèmes d'affichage et de disparition
Lenteur Spreadsheet VBA Excel 2003VC++: cl.exe error C2275: Mais pourquoi ????
passage d'une macro d'excel 2007 a 2003[C#][WOrd 2003] Modifier fichier Word
[ACCESS 2003] Numero automatique genere "manuellement"Access 2003 - on update cascade non reconnu ?
Post à supprimer! 
Plus de sujets relatifs à : VC++.net (2003) et les Graphics/PictureBox


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)