Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
7 févr. 2005 à 18:47
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
10 févr. 2005 à 18:36
bonjour tout le monde.
je commence un logiciel de dessin (bon en fait pas tout a fait mais ne compliquons pas tout)
programmé en win32
jusqu'a présent pour afficher un pixel j'utilisais PutPixel() (ou SetPixel()? j'ai pas le code sous les yeux...)
seulement ca a ses limites.
ce que j'aimerais c'est un tableau de données qui contienne tout mon
écran (un écan virtuel, comme dans openGL avec le color_buffer)
probleme:
un fois que j'ai rempli mon tableau, comment je fais pour l'afficher?
que se passe t-il si je redimentionne ma fenetre? comment éviter que
l'affichage d'une image commence avant que la précédente ne soit
completement affichée, ce qui donne l'effet de scintillement ( idem en
opengl avec des fps trop élevés) ? est-ce possible d'éviter de passer
le hDC a ma dll a chaque fois que je redessine l'écran ( pour l'instant
pas moyen d'y couper; et avec un pointeur ca marche pas)
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 févr. 2005 à 05:45
Salut,
Ben puisque personne te réponds...
Je crois que tu veux parler du double buffering. Sous windows, en gros, on crée un DC mémoire qui a les meme caracteristiques que le DC fenetre, on y dessine dedant, et on recopie d'un coup le DC mémoire dans le DC fenetre (avec bitblt).
C'est notamment cette technique que j'utilise dans ma source "des yeux", (lors du traitement du message WM_PAINT).
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 8 févr. 2005 à 18:50
ben, pas tout a fait.
enfin...
ce que tu me dis convient a ce que je voulais faire, mais c'est pas
tout a fait du double buffering...ou.. quoique...j'en sais rien . je
vais voir ta source, je l'avais déja vue, mais jamais le code.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 févr. 2005 à 19:15
Salut,
Tu as parlé de "tableau qui contient ton écran" et "d'afficher le tableau" donc j'ai pensé au DC mémoire.
Sinon pour le fullscreen, il me semble qu'on fait ca en metant le style WS_EX_TOPMOST a la fenetre, et en lui donnant les dimensions de l'ecran.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 févr. 2005 à 20:57
Salut,
Ben la fenetre est noire car le brush du background de ta fenetre doit etre noir.
Sinon tu peux y dessiner normalement en traitant le WM_PAINT, comme toutes les fenetres.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 8 févr. 2005 à 21:17
ouais en fait je dessinais noir sur noir...la j'ai du rouge sur noir ca pete le feu
"Sinon tu peux y dessiner normalement en traitant le WM_PAINT, comme toutes les fenetres."
c'est bien ca le probleme, je sais pas du tout comment on fait, moi au départ c'est openGL only
t'as pas un bon tuto sous la main pour les fonctions principales
de dessin? moi ce qui m'intéresse c'est de pouvoir dire au prog: le pixel de coordonnées (10,200), ben tu le mets en orange
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 8 févr. 2005 à 21:35
Salut,
OpenGL j'y connais rien, il etait question de win32.
Pour créer la fenetre de ton prog, tu as du commencer par enregistrer une class (avec RegisterClass()) qui contient les infos de ta fenetre (comme la WndProc, ou le Brush qui sert a dessiner le fond de la zone client, etc...).
Le message WM_PAINT est, comme tout les autres messages, recu par la WndProc de ta fenetre.
Enfin, pour l'histoire du pixel, l'api a utiliser est SetPixel(...), mais il existe plein d'autres api pour dessiner, la je te conseille d'aller jetter un coup d'oeil sur msdn.
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 9 févr. 2005 à 16:57
OK merci bcp, dl en cours, je vais sur msdn de suite.
juste uune derniere question en passant: si on crée un bitmap
(createcompatiblebitmap) on peut pas y accéder par unn truc genre
mon_bitmap[numéro_colonne][num_ligne]=RVB(1 125 2);
???
(je doute)
en tout cas je me renseigne
_______________________