Affichage plein écran

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Affichage plein écran

Message par pat »

Bonjour à tous et meilleurs voeux 2012.
Je suis sous Windows Vista SP2.
J'ai créé une application avec un graphique qui s'affiche en plein écran.
J'ai utilisé pour cela la commande bien connue OpenScreen(...) et pas de problème de ce côté là, le graphique s'est étalé sur tout l'écran.
Ma résolution était de 800 X 600 X 32.
Surprise ! Quand j'ai fait fonctionné cette application sous Windows 7 le graphique était centré à l'écran avec des bordures noires à gauche et à droite et donc le graphique ne prenait pas tout l'écran.
J'ai bien regardé que l'ordinateur sous Windows 7 avait bien la résolution ci-dessus et c'était bien le cas.
Pourquoi une telle différence entre ces deux OS.
Comment faire pour que mon graphique soit en plein écran sous Windows 7.
Merci à ceux savent et qui voudront m'éclaicir et me donner des solutions (si c'est possible) sur ce point.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Affichage plein écran

Message par Backup »

voir la lib Desktop() dans la Doc Purebasic

exemple (regarde bienExamineDesktop() )

Code : Tout sélectionner




; code by Dobro http://michel.dobro.free.fr/

#dobro=1
#Police=1
#sprite=1
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 50, #PB_Font_Bold )
ExamineDesktops()


EcranX = DesktopWidth(0)
;=largeur de l'ecran
EcranY = DesktopHeight(0)
;=hauteur de l'ecran

;WindowID = OpenWindow(1, 0, 0, EcranX, EcranY, "hello", #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
;WindowID = WindowID(1)
;Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
OpenScreen( EcranX,EcranY,32,"cercle")
Resultat = InitMouse()
taille_du_cercle=200
nombre_de_point=360 ; ceci determine la resolution (nombre de points)


; on fabrique un sprite :D
CreateSprite(#sprite,32,32) ; de 32 par 32
StartDrawing( SpriteOutput(#sprite) ) ; on va dessiner dans notre sprite (qui est au depart une cellule vide)
	Circle(16, 16, 16 , RGB(255,0,0))  ; je decide de dessiner un cercle rouge dedans
StopDrawing()
; voila notre sprte est dessiné !! :D



Repeat
	ExamineMouse()
	;Event=WaitWindowEvent()
	
	StartDrawing( ScreenOutput())
		compt+1
		If compt=nombre_de_point 
			compt=0
		EndIf ; on a fait le tour ??
		
		x=taille_du_cercle* Cos( compt*(2*3.1415926/nombre_de_point)) + (EcranX / 2) ; la formule du cercle /360 = 360 points
		Y=taille_du_cercle * Sin( compt*(2*3.1415926/nombre_de_point)) + (EcranY  / 2) ; la formule du cercle
		Box(x, Y,2, 2 ,RGB(255,255,255)) ; on peux laisser une trace du dessin
	StopDrawing()
	
	; on affiche notre rond rouge :D
	DisplaySprite(#sprite,x,Y)
	; *****************************
	StartDrawing( ScreenOutput())
		DrawText(20, 200," a la fin du dessin ")
		DrawText(20, 250," click avec le bouton droit !! ")
	StopDrawing()
	FlipBuffers()
	; affiche l'ecran  *****<------- si tu Rem ceci le sprite laisse une trace
	
	;ClearScreen(RGB(0,0,0))
	
	
	;Event=WindowEvent()
	If MouseButton(2)
		End
	EndIf
Until MouseButton(2)

; 
; EPb 







Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Affichage plein écran

Message par SPH »

Pour centrer une image quelconque dans un screen, il faut afficher l'image a (LARGEUR DE L'ECRAN/2 - LARGEUR DE L'IMAGE/2 , HAUTEUR DE L'ECRAN/2 - HAUTEUR DE L'IMAGE/2)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Affichage plein écran

Message par pat »

Merci à tous les deux pour vos réponses.

Pour Dobro :
Merci pour tes explications. Ton programme utilise une fenêtre alors que mon application utilise le mode plein écran (pas de fenêtre, et utilise OpenScreen(...) pas OpenWindowedScreen(....)).
Je pense que tu es sur XP. Mon ordi est sous Vista SP2 et cela fonctionne parfaitement bien car les graphiques s'étalent bien sur tout l'écran, comme je le voulais, mais le problème vient du fait d'être sous Windows 7 et là en plein écran il y a une bordure noire à gauche et à droite et mon graphique est centré, ce qui n'est pas le cas sous Vista et je me demande comment faire pour que mon graphique, SOUS WINDOWS 7, s'étale sur TOUT L'ECRAN.

Pour SPH :
Je ne souhaite pas centrer mon graphique mais l'étaler sur tout l'écran en mode plein écran et cela fonctionne parfaitement bien sous Vista SP2 mais pas en Windows 7 qui centre mon graphique et n'étale pas le graphique sur tout l'écran (j'ai une bordure noire à gauche et à droite du graphique).

Il doit bien y avoir un moyen de créer un graphique plein écran en Windows 7.
Et comment faire ?

Mais merci quand même pour vos explications.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Affichage plein écran

Message par SPH »

pat a écrit :Il doit bien y avoir un moyen de créer un graphique plein écran en Windows 7.
Je me mefie de windows 7. Il fait tourner les .PB n'importe comment :roll:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Affichage plein écran

Message par Ar-S »

Moué.. faut pas trop voir le mal ou il n'est pas..
J'ai 7 x64 et je n'ai pas de soucis... Il a bon dos 7 :lol:

Code : Tout sélectionner

InitSprite()
ExamineDesktops()

L = DesktopWidth(0)
H = DesktopHeight(0)

If OpenScreen(L, H, 32, "test")
  
  Debug "OK"
  Delay(5000)
  
Else
  
  Debug "CHIAGE"
  Delay(2000)
  
 
EndIf
End
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Affichage plein écran

Message par Backup »

pat a écrit :Merci à tous les deux pour vos réponses.

Pour Dobro :
Merci pour tes explications. Ton programme utilise une fenêtre alors que mon application utilise le mode plein écran (pas de fenêtre, et utilise OpenScreen(...) pas OpenWindowedScreen(....)).
Je pense que tu es sur XP. Mon ordi est sous Vista SP2 et cela fonctionne parfaitement bien car les graphiques s'étalent bien sur tout l'écran, comme je le voulais, mais le problème vient du fait d'être sous Windows 7 et là en plein écran il y a une bordure noire à gauche et à droite et mon graphique est centré, ce qui n'est pas le cas sous Vista et je me demande comment faire pour que mon graphique, SOUS WINDOWS 7, s'étale sur TOUT L'ECRAN..
:roll:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Affichage plein écran

Message par Ar-S »

Histoire d'en être sûr ^^

Code : Tout sélectionner

; Effet boite de nuit disco
; par Ar-S / 07-1-2012 - PB 4.60
InitSprite() : ExamineDesktops() : InitKeyboard()

L = DesktopWidth(0)
H = DesktopHeight(0)

Screen = OpenScreen(L, H, 32, "test")

If Screen  
  
  Repeat
    ExamineKeyboard()
    
    If StartDrawing(ScreenOutput())
        i = 0 : j = 0
        
        For i = 0 To L Step 20
          For j = 0 To H Step 50  
            DrawText(i,j,"        ",$FF,RGB(Random(255),Random(255),Random(255)))
            i+1 : j+1
            
            If i = L 
              i = 0
            ElseIf j = H
              j = 0
            EndIf
            
          Next 
        Next
      StopDrawing()
    EndIf
    
    Delay(2)
    FlipBuffers()
    
    
  Until KeyboardPushed(#PB_Key_Escape)
  
  
Else
  
  Debug "CHIAGE"
  Delay(2000)
  
  
EndIf
End
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
samsarat
Messages : 3
Inscription : mar. 24/mai/2011 13:30

Re: Affichage plein écran

Message par samsarat »

Bonsoir,

ça marche bien comme tu le souhaites sur mon Seven 64.
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: Affichage plein écran

Message par pat »

Merci à tous pour vos réponses.

Je récapitule parce que j'ai l'impression que personne n'a compris ce que je voulais dire.

Je suis sous Vista SP2. J'ai créé un programme que j'ai compilé en x86 sous Vista SP2 (donc en 32 bits).
Dans ce programme il y a du graphique créé avec OpenScreen(....).
Pour information la résolution est de 800 X 600 X 32.
En exécutant mon programme le graphisme tient dans TOUTE LA SURFACE DE L'ECRAN, comme je le souhaite, et donc il n'y pas de problème.
J'ai voulu essayer mon programme sous un autre ordinateur.
Cet autre ordinateur est sous Windows 7 (donc en 64 bits).
La surprise est que le graphisme ne PREND PAS TOUTE LA SURFACE DE L'ECRAN, mais centre le graphisme (avec une bordure noire à gauche et à droite) alors qu'en Vista SP2 il prend tout l'écran.
Je souhaite donc savoir comment faire pour que mon graphique, créé sous Vista SP2 et qui fonctionne comme je le souhaite en plein écran, fonctionne également en plein écran sous Windows 7.
Evidemment ceux qui sont sous Windows 7 ne peuvent voir cela, ni ceux d'ailleurs qui sont sous XP.
Je tiens à préciser que l'ordinateur auquel j'ai essayé mon programme et qui était sous Windows 7 avait bien une résolution 800 X 600 X 32 existante.
Je me demande donc comment faire que mon programme fonctionne EN PLEIN ECRAN sous tous les OS.
Ce n'est pas un problème de savoir-faire du graphisme car cela fonctionne bien sous Vista SP2.
Il doit y avoir une explication et ceux qui pourront m'éclairer me seront d'une grande aide.
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Affichage plein écran

Message par Mesa »

Il faudrait y aller par étape.

C'est peut-être un problème de pilote de carte graphique : mets le à jour.

Suivant la marque de la carte, il faudra aller sur http://www.nvidia.fr/page/home.html ou sur http://support.amd.com/fr/Pages/AMDSupportHub.aspx pour les carte ATI.

Il faut absolument faire cette étape pour être sûr que ce n'est pas un problème de pilote.

1) Les bordures noires apparaissent-elles sur plusieurs ordinateurs W7 différents ?

2) La résolution 800x600 et W7 ne font pas bon ménage.
Fais plusieurs essais sans changer ton code source mais en mettant la résolution du PC à 1024x768 puis à une très haute définition, au moins 1440 ou plus, ça donne quoi ?

3) Enfin modifie ton code source pour essayer d'autres résolutions comme le 1024x768, 1280x960, 1920x1080 si l'ecran est fullHD, etc.

4) Change la vitesse de rafraichissement de la carte graphique (quelque part dans le panneau de configuration), essaies plusieurs taux dont le 60 Hz.

5) Si tu sais démarrer en mode sans echec, vas-y et refais tous les test 2) 3) et 4)

Comment se comportent les bandes noires avec tous ces tests ?

Mesa.
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Affichage plein écran

Message par graph100 »

pour intervenir dans le post :
j'ai win7 64bit, et le même pb que toi, donc je vois parfaitement de quoi tu parles.

je ne pense pas que ce soit lié à 7, mais plutôt au pilote de NVIDIA pour 7, puisque c'est le pilote qui prend en charge l'écran graphique, à moins que ce soit DirectX qqchose, dans ce cas là ce serais windows le fautif.

Ca me fait ce pb avec la dernière version de la maj des pilotes.

@Ar-S : ton prog ne souligne pas le problème que pat rencontre. En effet la résolution du bureau à le même RATIO que l'écran.

Le pb surviens si la définition demandé avec le openscreen n'a pas le même ratio que l'écran (sur un windows 7, cartes graphiques NVIDIA, faut que qqun test sur ATI)

Exemple avec le code de Ar-S :

Code : Tout sélectionner

; Effet boite de nuit disco
; par Ar-S / 07-1-2012 - PB 4.60
InitSprite() : ExamineDesktops() : InitKeyboard()

; L = DesktopWidth(0)
; H = DesktopHeight(0)
L = 800
H = 600

Screen = OpenScreen(L, H, 32, "test")

If Screen 
 
  Repeat
    ExamineKeyboard()
   
    If StartDrawing(ScreenOutput())
        i = 0 : j = 0
       
        For i = 0 To L Step 20
          For j = 0 To H Step 50 
            DrawText(i,j,"        ",$FF,RGB(Random(255),Random(255),Random(255)))
            i+1 : j+1
           
            If i = L
              i = 0
            ElseIf j = H
              j = 0
            EndIf
           
          Next
        Next
      StopDrawing()
    EndIf
   
    Delay(2)
    FlipBuffers()
   
   
  Until KeyboardPushed(#PB_Key_Escape)
 
 
Else
 
  Debug "CHIAGE"
  Delay(2000)
 
 
EndIf
End
mon écran à une def de 1920x1200 --> ratio = 16/10
je demande une def de 800x600 --> ratio = 4/3
du coup il me rajoute des bandes noires à droite et à gauche pour conserver une isométrie dans l'affichage (pas d'étirement de l'écran)

Voila, moi je n'ai pas de solution pour le moment. faut peut-être regarder en détail les options graphiques. ou alors ya un truc à corriger avec la manière dont PB lance un écran graphique
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Affichage plein écran

Message par Backup »

au pire la soluce est de forcer la résolution en 800x600 et basta ! :roll:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Affichage plein écran

Message par Ar-S »

Sur une ATI ça marche (plein ecran) en 800x600 alors que je suis en 16:10 (1680x1050). Y'a donc surement une couille avec les Nvidia. Faudrait regarder dans les options avancées si y'a pas un truc à activer/désactiver..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Affichage plein écran

Message par graph100 »

en fait, le problème viens à mon avis du lancement part PB de l'écran graphique. Car pour des jeux je n'ai jamais ce soucis même en 800x600
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre