Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Récupérer la taille de l'écran physique + petites manipulations  (Lu 6821 fois)

0 Membres et 1 Invité sur ce sujet

Armulis

  • Newbie
  • *
  • Messages: 33
    • Voir le profil
Salut!
J'ai créé un programme qui a une interface graphique en plein-écran, et pour avoir les bonnes dimensions, j'utilisais des méthodes de windows, dont:




    int height(GetSystemMetrics(SM_CYSCREEN)); // Récupérer résolution verticale de l'écran


Mais on m'a dit que, comme j'utilisais SFML, je pouvait utiliser les attributs de VideoMode, qui ont l'avantage d'être plus portables.
Je dis soit, mais simplement, je n'ai pas assez de connaissances pour le faire, et j'ai besoin d'un coup de main.


Je voudrais donc pouvoir accéder à la largeur et à la hauteur de l'écran (mes autres fonctions en ont besoin).


Par-contre, j'ai remarqué un autre attribut de VideoMode qui s'appelle bpp (bits per pixel), et je me demandais si en utilisant ça, je ne pourrais pas shooter le redimensionnement que je fais sur chaque image chargée, afin qu'elle rentre dans mon écran.
Par-exemple, je prévois une résolution de 1920x1080p, et peut-être qu'en réglant "bpp" correctement je pourrais simplement afficher mes images de 1920x1080 pixels sans avoir à les redimensionner.


Si vous avez compris, j'attends vos suggestions et vos idées. =)

Eho

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
    • E-mail
Re : Récupérer la taille de l'écran physique + petites manipulations
« Réponse #1 le: Juillet 04, 2014, 10:28:29 am »
Bonjour

Si c'est en pixels, sur un écran :
sf::VideoMode::getDesktopMode().width
sf::VideoMode::getDesktopMode().height
http://sfml-dev.org/documentation/2.1-fr/classsf_1_1VideoMode.php

La taille de ta fenêtre doit correspondre à ça ?

Pour les «bits per pixel», il s'agit de la profondeur des couleurs. Tu peux ignorer cet attribut.

Armulis

  • Newbie
  • *
  • Messages: 33
    • Voir le profil
Re : Récupérer la taille de l'écran physique + petites manipulations
« Réponse #2 le: Juillet 04, 2014, 11:00:43 am »
Aha... Cool, merci.
Mais pour ce qui est d'éviter de redimensionner mes images, ce serait pas possible de travailler sans redimensionner mes images (donc toujours travailler en 1920x1080p) et que ma RenderWindow d'adapte elle-même aux dimensions de l'écran?

Eho

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
    • E-mail
Re : Récupérer la taille de l'écran physique + petites manipulations
« Réponse #3 le: Juillet 04, 2014, 11:28:18 am »
Tu mets ton image dans une sf::Texture et tu l'affiches via un sf::Sprite.
sf::Sprite a une méthode .setScale()

Avec un tout petit peu de mathématiques, tu calculeras les bon facteurs de scale.

Ta sf::RenderWindow est de la même taille que la résolution maximale de l'écran (cas le plus logique).
Si oui, essayer de  changer la résolution de la fenêtre et / ou de l'écran n'est pas une bonne solution (lenteur, écran qui s'éteint et se rallume, scintillement, ...).
« Modifié: Juillet 04, 2014, 11:33:25 am par Eho »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Récupérer la taille de l'écran physique + petites manipulations
« Réponse #4 le: Juillet 04, 2014, 11:41:42 am »
Si tu veux toujours bosser avec une résolution fixe, utilise une vue (sf::View) de la taille souhaitée, la fenêtre se chargera ensuite de faire tenir ce qu'il y a dans la vue dans sa taille.
Laurent Gomila - SFML developer

Armulis

  • Newbie
  • *
  • Messages: 33
    • Voir le profil
Re : Récupérer la taille de l'écran physique + petites manipulations
« Réponse #5 le: Juillet 04, 2014, 01:05:18 pm »
Ok, ok... Je fais déjà toutes les opérations (setScale, etc.) sur mes sprites, mais justement, je cherchais un truc comme View. Je vais regarder si ça me convient, merci! =)

 

anything