Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
5 févr. 2012 à 09:04
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
5 févr. 2012 à 11:09
Bonjour,
Je suis en train de développer un système de diaporama. Pour ce faire, avant le lancement de ce diaporama, je change la résolution d'écran par celle nominale de l'écran. Dans mon 1920*1200.
En principe je n'ai pas de problème.
Sauf que chez un client qui a des problèmes de vision, il travaille en 1152*864 (c'est bâtard mais ça marche sans problème).
Pour mettre dans la résolution standard, je récupère la structure DEVMODE initiale, modifie simplement le Screen.Width et Screen.Height par celles désirées et envoie la fonction ChangeDisplaySettings() avec la flag CD_TEST la 1ère fois pour vérifier si le mode est supporté.
Or cette fonction a un comportement bizarre.
Si la résolution de travail est par exemple de 1280 * 1024 (càd une résolution classique), un changement vers 1920 * 1200 marchera sans problème.
Par contre si la résolution de travail est 1152 * 864 (résolution bâtarde, mais qui marche très bien je le répète), faire une tentative vers 1920 * 1200 renvoie un Mode non Supporté, reste donc en 1152*864 et affiche des photos toutes déformées.
Voici mon code:
Au début du programme je récupère la résolution initiale:
Private p_TScreenResolution As DEVMODE
Private p_ScreenError As Long
Public Function BH_SaveScreenResolution() As Boolean
p_ScreenError = EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, p_TScreenResolution)
If p_ScreenError = 0 Then
p_ScreenError DISP_CHANGE_FAILED: BH_SaveScreenResolution False
Else
p_ScreenError DISP_CHANGE_SUCCESSFUL: BH_SaveScreenResolution True
End If
End Function
et juste avant le diaporama:
Public Function BH_SetScreenResolution(ByVal Width As Long, ByVal Height As Long) As Long
Dim TScreenResolution As DEVMODE, lngResult As Long, ScreenInfo As Long
TScreenResolution p_TScreenResolution: TScreenResolution.dmPelsWidth Width:
TScreenResolution.dmPelsHeight Height: TScreenResolution.dmBitsPerPel p_TScreenResolution.dmBitsPerPel
TScreenResolution.dmDisplayFrequency = p_TScreenResolution.dmDisplayFrequency
p_ScreenError = ChangeDisplaySettings(TScreenResolution, CDS_TEST)
If p_ScreenError = DISP_CHANGE_SUCCESSFUL Then
If ChangeDisplaySettings(TScreenResolution, CDS_UPDATEREGISTRY) = DISP_CHANGE_SUCCESSFUL Then
ScreenInfo = ((Height * 2 ^ 16) + Width)
Call SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, ByVal p_TScreenResolution.dmBitsPerPel, ByVal ScreenInfo)
End If
End If
BH_SetScreenResolution = p_ScreenError
End Function
Dernière précision, j'ai la même chose sur une machine de test où je suis certain que la résolution n'a pas été changé entre la sauvegarde et le changement de résolution.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 5 févr. 2012 à 11:05
Je ne saurais essayer avec 1920 * 1200 (le max, est sur mon écran 1440 x 900)
Je n'ai par contre eu aucune difficulté dans le sens aller, de 1280*1024 vers 1440 x 900
Dans le sens retour vers config d'origine , par contre : impossible et pour cause : config anormale qui nécessiterait le redémarrage de la machine (comme dit dans le panneau de config).
Tu vois où mènent certaines "alchimies" ?
Allez ===>> bon dimanche, donc.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 5 févr. 2012 à 09:09
Bonjour calade,
outre le fait qu'il ne faut jamais toucher à la résolution d'une machine qui n'est pas la tienne (je me mets très en colère si on fait ça sur la mienne et fusille carrément si, en plus, on ne m'en dit rien de manière expresse) :
Il est normal que les images soient déformées lorsque ses proportions ne sont pas gardées.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 5 févr. 2012 à 09:15
Salut ucFoutu,
Tu peux ranger ta kalach !
Je change la résolution (donc vers 1920 * 1200) de mon client avec son accord et dans le seul but de voir des photos non déformées, et bien entendu je rétabli à SA résolution d'origine (1152 * 864) avant de sortir.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 5 févr. 2012 à 10:03
Ah ...
Si c'était pour si peu ... quel était le besoin d'un code pour faire celà ?
Et si parce-que tu as développé une appli genre album de photographies, ce n'était pas à la résolution, qu'il fallait toucher, mais (en fonction de la résolution de "l'autre", à ta propre appli, par "redimensionnement").
En tout état de cause : te voilà donc avec des images qui n'ont plus les mêmes proportions
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Vous n’avez pas trouvé la réponse que vous recherchez ?
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 5 févr. 2012 à 10:13
On ne se comprends pas, je pense.
Mon client travaille normalement en 1152*864.
Quand il regarde des photos ou des vidéos d'ailleurs (Picasa, Exporer Windows), celles-ci sont toutes déformées.
Quand on change sa résolution via le panneau de config' en 1920*1200 et que l'on relance ce visionnage, les photos/vidéos sont normales.
Dans mon appli, je veux simplement lui éviter d'aller dans le panneau de config à chaque fois. C'est tout. Et je pense que redimensionner mon appli ne changera rien au problème sauf à coder en dur le Screen.Width et Screen.Height de l'écran en 1920*1200 qui me sert à calculer le ratio à appliquer aux photos (celles-ci pouvant être de toutes dimensions, mais de toutes façons plus grandes que l'écran).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 5 févr. 2012 à 10:47
On ne se comprends définitivement pas.
C'est surtout moi, qui ne comprends pas :
d'une part ceci :
Par contre si la résolution de travail est 1152 * 864 (résolution bâtarde, mais qui marche très bien je le répète), faire une tentative vers 1920 * 1200 renvoie un Mode non Supporté, reste donc en 1152*864 et affiche des photos toutes déformées.
et d'autre part cela (maintenant) :
Quand on change sa résolution via le panneau de config' en 1920*1200 et que l'on relance ce visionnage, les photos/vidéos sont normales.
Veux-tu dire que ton code (je n'utiliserais personnellement pas le même) décèle une "impossibilité" non réelle ?
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient