Pardon Jacques,
J'ai essayé de travailler dessus une partie de l'après midi, mais sans
succès pour l'instant.
En fait depuis tout à l'heure j'utilise plutôt la fonction DRawImage:, comme
ci-dessous:
Ce que je voudrais, c'est adapter la feuille à la taille de l'image, à
condition que les dimensions de la feuille ne dépassent pas l'écran.
Certaines images prises avec des appareils photos numériques sont beaucoup
trop grandes si j'utilise mon dimensionnement ci-dessus.
Les chiffres 15.4 / 16.5 / 19 sont des chiffres obtenus pas tâtonnements,
mais pas rigoureux.
Vois-tu un peu plus clair dans mon problème ?
Pardon Jacques,
J'ai essayé de travailler dessus une partie de l'après midi, mais sans
succès pour l'instant.
En fait depuis tout à l'heure j'utilise plutôt la fonction DRawImage:, comme
ci-dessous:
Ce que je voudrais, c'est adapter la feuille à la taille de l'image, à
condition que les dimensions de la feuille ne dépassent pas l'écran.
Certaines images prises avec des appareils photos numériques sont beaucoup
trop grandes si j'utilise mon dimensionnement ci-dessus.
Les chiffres 15.4 / 16.5 / 19 sont des chiffres obtenus pas tâtonnements,
mais pas rigoureux.
Vois-tu un peu plus clair dans mon problème ?
Pardon Jacques,
J'ai essayé de travailler dessus une partie de l'après midi, mais sans
succès pour l'instant.
En fait depuis tout à l'heure j'utilise plutôt la fonction DRawImage:, comme
ci-dessous:
Ce que je voudrais, c'est adapter la feuille à la taille de l'image, à
condition que les dimensions de la feuille ne dépassent pas l'écran.
Certaines images prises avec des appareils photos numériques sont beaucoup
trop grandes si j'utilise mon dimensionnement ci-dessus.
Les chiffres 15.4 / 16.5 / 19 sont des chiffres obtenus pas tâtonnements,
mais pas rigoureux.
Vois-tu un peu plus clair dans mon problème ?
pierre.rivet a écrit :Pardon Jacques,
Tu n'as pas à t'excuser :-)J'ai essayé de travailler dessus une partie de l'après midi, mais sans
succès pour l'instant.
En fait depuis tout à l'heure j'utilise plutôt la fonction DRawImage:,
comme ci-dessous:
[...]Ce que je voudrais, c'est adapter la feuille à la taille de l'image, à
condition que les dimensions de la feuille ne dépassent pas l'écran.
Certaines images prises avec des appareils photos numériques sont
beaucoup trop grandes si j'utilise mon dimensionnement ci-dessus.
Les chiffres 15.4 / 16.5 / 19 sont des chiffres obtenus pas
tâtonnements, mais pas rigoureux.
Vois-tu un peu plus clair dans mon problème ?
Je pense, oui. En fait il faut dimensionner la feuille avant d'afficher
l'image, et pour cela il faut connaître les dimensions de cette dite
image. Pour ne pas trop casser le code existant, en premier lieu on
ajoute une fonction dans le module 'ModImage.bas' qui permet de récupérer
la taille, on pourra optimiser ensuite :
Public Function GetImageSize(ByRef vsFilePath As String, _
ByVal vnTargetDC As Long, _
ByRef nWidth As Single, _
ByRef nHeight As Single) As Boolean
Dim lpSI As GdiplusStartupInput
Dim hGdipToken As Long
Dim hTargetGraphics As Long
Dim hImage As Long
GetImageSize = False
lpSI.GdiplusVersion = 1
GdiplusStartup hGdipToken, lpSI
If GdipCreateFromHDC(vnTargetDC, hTargetGraphics) = Gp_Ok Then
If GdipLoadImageFromFile(W(vsFilePath), hImage) = Gp_Ok Then
'# On récupère les dimensions de l'image...
If GdipGetImageDimension(hImage, nWidth, nHeight) = Gp_Ok Then
GetImageSize = True
End If
End If
End If
GdiplusShutdown hGdipToken
End Function
Et dans le code de la feuille :
Option Explicit
' Pour la hauteur de la barre de titre
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
Private Sub Form_Load()
Dim nWidth As Single
Dim nHeight As Single
Me.ScaleMode = vbPixels
If GetImageSize(App.Path & "Image.tif", _
Me.hdc, nWidth, nHeight) Then
Me.width = nWidth * Screen.TwipsPerPixelX
' SM_CYCAPTION renvoie la hauteur de la barre de titre
' à prendre en compte dans la hauteur totale de la feuille
Me.height = (nHeight + GetSystemMetrics(SM_CYCAPTION)) * _
Screen.TwipsPerPixelY
' Centre la feuille sur l'écran
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
' Affiche l'image
DrawImage App.Path & "Image.tif", Me.hdc, 0, 0, _
Me.ScaleWidth, Me.ScaleHeight, 1, 0
'# On force le raffraichissement
Me.Refresh
End If
End Sub
Reste à gérer les images trop grandes ... Ce qui peut se faire en
récupérant la taille de l'écran avec GetSystemMetrics et les constantes
SM_CXSCREEN et SM_CYSCREEN :
<http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx>
mais n'hésites pas à revenir si tu as un souci :-)
--
Cordialement,
Jacques.
pierre.rivet a écrit :
Pardon Jacques,
Tu n'as pas à t'excuser :-)
J'ai essayé de travailler dessus une partie de l'après midi, mais sans
succès pour l'instant.
En fait depuis tout à l'heure j'utilise plutôt la fonction DRawImage:,
comme ci-dessous:
[...]
Ce que je voudrais, c'est adapter la feuille à la taille de l'image, à
condition que les dimensions de la feuille ne dépassent pas l'écran.
Certaines images prises avec des appareils photos numériques sont
beaucoup trop grandes si j'utilise mon dimensionnement ci-dessus.
Les chiffres 15.4 / 16.5 / 19 sont des chiffres obtenus pas
tâtonnements, mais pas rigoureux.
Vois-tu un peu plus clair dans mon problème ?
Je pense, oui. En fait il faut dimensionner la feuille avant d'afficher
l'image, et pour cela il faut connaître les dimensions de cette dite
image. Pour ne pas trop casser le code existant, en premier lieu on
ajoute une fonction dans le module 'ModImage.bas' qui permet de récupérer
la taille, on pourra optimiser ensuite :
Public Function GetImageSize(ByRef vsFilePath As String, _
ByVal vnTargetDC As Long, _
ByRef nWidth As Single, _
ByRef nHeight As Single) As Boolean
Dim lpSI As GdiplusStartupInput
Dim hGdipToken As Long
Dim hTargetGraphics As Long
Dim hImage As Long
GetImageSize = False
lpSI.GdiplusVersion = 1
GdiplusStartup hGdipToken, lpSI
If GdipCreateFromHDC(vnTargetDC, hTargetGraphics) = Gp_Ok Then
If GdipLoadImageFromFile(W(vsFilePath), hImage) = Gp_Ok Then
'# On récupère les dimensions de l'image...
If GdipGetImageDimension(hImage, nWidth, nHeight) = Gp_Ok Then
GetImageSize = True
End If
End If
End If
GdiplusShutdown hGdipToken
End Function
Et dans le code de la feuille :
Option Explicit
' Pour la hauteur de la barre de titre
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
Private Sub Form_Load()
Dim nWidth As Single
Dim nHeight As Single
Me.ScaleMode = vbPixels
If GetImageSize(App.Path & "Image.tif", _
Me.hdc, nWidth, nHeight) Then
Me.width = nWidth * Screen.TwipsPerPixelX
' SM_CYCAPTION renvoie la hauteur de la barre de titre
' à prendre en compte dans la hauteur totale de la feuille
Me.height = (nHeight + GetSystemMetrics(SM_CYCAPTION)) * _
Screen.TwipsPerPixelY
' Centre la feuille sur l'écran
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
' Affiche l'image
DrawImage App.Path & "Image.tif", Me.hdc, 0, 0, _
Me.ScaleWidth, Me.ScaleHeight, 1, 0
'# On force le raffraichissement
Me.Refresh
End If
End Sub
Reste à gérer les images trop grandes ... Ce qui peut se faire en
récupérant la taille de l'écran avec GetSystemMetrics et les constantes
SM_CXSCREEN et SM_CYSCREEN :
<http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx>
mais n'hésites pas à revenir si tu as un souci :-)
--
Cordialement,
Jacques.
pierre.rivet a écrit :Pardon Jacques,
Tu n'as pas à t'excuser :-)J'ai essayé de travailler dessus une partie de l'après midi, mais sans
succès pour l'instant.
En fait depuis tout à l'heure j'utilise plutôt la fonction DRawImage:,
comme ci-dessous:
[...]Ce que je voudrais, c'est adapter la feuille à la taille de l'image, à
condition que les dimensions de la feuille ne dépassent pas l'écran.
Certaines images prises avec des appareils photos numériques sont
beaucoup trop grandes si j'utilise mon dimensionnement ci-dessus.
Les chiffres 15.4 / 16.5 / 19 sont des chiffres obtenus pas
tâtonnements, mais pas rigoureux.
Vois-tu un peu plus clair dans mon problème ?
Je pense, oui. En fait il faut dimensionner la feuille avant d'afficher
l'image, et pour cela il faut connaître les dimensions de cette dite
image. Pour ne pas trop casser le code existant, en premier lieu on
ajoute une fonction dans le module 'ModImage.bas' qui permet de récupérer
la taille, on pourra optimiser ensuite :
Public Function GetImageSize(ByRef vsFilePath As String, _
ByVal vnTargetDC As Long, _
ByRef nWidth As Single, _
ByRef nHeight As Single) As Boolean
Dim lpSI As GdiplusStartupInput
Dim hGdipToken As Long
Dim hTargetGraphics As Long
Dim hImage As Long
GetImageSize = False
lpSI.GdiplusVersion = 1
GdiplusStartup hGdipToken, lpSI
If GdipCreateFromHDC(vnTargetDC, hTargetGraphics) = Gp_Ok Then
If GdipLoadImageFromFile(W(vsFilePath), hImage) = Gp_Ok Then
'# On récupère les dimensions de l'image...
If GdipGetImageDimension(hImage, nWidth, nHeight) = Gp_Ok Then
GetImageSize = True
End If
End If
End If
GdiplusShutdown hGdipToken
End Function
Et dans le code de la feuille :
Option Explicit
' Pour la hauteur de la barre de titre
Private Const SM_CYCAPTION = 4
Private Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long
Private Sub Form_Load()
Dim nWidth As Single
Dim nHeight As Single
Me.ScaleMode = vbPixels
If GetImageSize(App.Path & "Image.tif", _
Me.hdc, nWidth, nHeight) Then
Me.width = nWidth * Screen.TwipsPerPixelX
' SM_CYCAPTION renvoie la hauteur de la barre de titre
' à prendre en compte dans la hauteur totale de la feuille
Me.height = (nHeight + GetSystemMetrics(SM_CYCAPTION)) * _
Screen.TwipsPerPixelY
' Centre la feuille sur l'écran
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
' Affiche l'image
DrawImage App.Path & "Image.tif", Me.hdc, 0, 0, _
Me.ScaleWidth, Me.ScaleHeight, 1, 0
'# On force le raffraichissement
Me.Refresh
End If
End Sub
Reste à gérer les images trop grandes ... Ce qui peut se faire en
récupérant la taille de l'écran avec GetSystemMetrics et les constantes
SM_CXSCREEN et SM_CYSCREEN :
<http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx>
mais n'hésites pas à revenir si tu as un souci :-)
--
Cordialement,
Jacques.
récupérant la taille de l'écran avec GetSystemMetrics et les constantes
SM_CXSCREEN et SM_CYSCREEN :
<http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx>
mais n'hésites pas à revenir si tu as un souci :-)
--
Cordialement,
Jacques.
récupérant la taille de l'écran avec GetSystemMetrics et les constantes
SM_CXSCREEN et SM_CYSCREEN :
<http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx>
mais n'hésites pas à revenir si tu as un souci :-)
--
Cordialement,
Jacques.
récupérant la taille de l'écran avec GetSystemMetrics et les constantes
SM_CXSCREEN et SM_CYSCREEN :
<http://msdn2.microsoft.com/en-us/library/ms724385(VS.85).aspx>
mais n'hésites pas à revenir si tu as un souci :-)
--
Cordialement,
Jacques.
Bonjour Jacques,
Comme tu me l'avais proposé, je reviens vers toi, car je ne parviens pas à
réduire la taille de mes images trop grandes.
Je t'ai mis ci-dessous la code utilisé, avec des commentaires destinés à ta
perspicacité....:-))
Ce que je t'ai mis est bien entendu un résumé des nombreux essais effectués.
Bonjour Jacques,
Comme tu me l'avais proposé, je reviens vers toi, car je ne parviens pas à
réduire la taille de mes images trop grandes.
Je t'ai mis ci-dessous la code utilisé, avec des commentaires destinés à ta
perspicacité....:-))
Ce que je t'ai mis est bien entendu un résumé des nombreux essais effectués.
Bonjour Jacques,
Comme tu me l'avais proposé, je reviens vers toi, car je ne parviens pas à
réduire la taille de mes images trop grandes.
Je t'ai mis ci-dessous la code utilisé, avec des commentaires destinés à ta
perspicacité....:-))
Ce que je t'ai mis est bien entendu un résumé des nombreux essais effectués.
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
WorkRect.Left, WorkRect.Top, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
WorkRect.Left, WorkRect.Top, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
WorkRect.Left, WorkRect.Top, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
Jacques93 a écrit :
[...]Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
WorkRect.Left, WorkRect.Top, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
remplacer par :
Me.Left = (WorkWidth - Me.width) / 2
Me.Top = (WorkHeight - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
0, 0, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
--
Cordialement,
Jacques.
Jacques93 a écrit :
[...]
Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
WorkRect.Left, WorkRect.Top, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
remplacer par :
Me.Left = (WorkWidth - Me.width) / 2
Me.Top = (WorkHeight - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
0, 0, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
--
Cordialement,
Jacques.
Jacques93 a écrit :
[...]Me.Left = (Screen.width - Me.width) / 2
Me.Top = (Screen.height - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
WorkRect.Left, WorkRect.Top, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
remplacer par :
Me.Left = (WorkWidth - Me.width) / 2
Me.Top = (WorkHeight - Me.height) / 2
DrawImage ImagePath, Me.hdc, _
0, 0, _
(Me.width - BorderWidth) / _
Screen.TwipsPerPixelX, _
(Me.height - TitleHeight - BorderWidth) / _
Screen.TwipsPerPixelY, _
1, 0
--
Cordialement,
Jacques.
Bonjour Jacques,
Tu vas encore dire que je m'excuse à chaque fois que je te réponds.....:-))
mais je n'ai pris connaissance de tes messages que depuis une heure environ.
Je n'aurai qu'un seul mot: BRAVO et encore Merci,
Bonne fin de semaine,
Bonjour Jacques,
Tu vas encore dire que je m'excuse à chaque fois que je te réponds.....:-))
mais je n'ai pris connaissance de tes messages que depuis une heure environ.
Je n'aurai qu'un seul mot: BRAVO et encore Merci,
Bonne fin de semaine,
Bonjour Jacques,
Tu vas encore dire que je m'excuse à chaque fois que je te réponds.....:-))
mais je n'ai pris connaissance de tes messages que depuis une heure environ.
Je n'aurai qu'un seul mot: BRAVO et encore Merci,
Bonne fin de semaine,
Bonjour pierre.rivet,
pierre.rivet a écrit :Bonjour Jacques,
Pour ceux qui ne connaissent pas, l'image "Conguel.tif", que j'ai
indiqué dans le code et utilisée a été récupérée sur le forum Bretagne
de news.zoo-logique.org. Ca se trouve sur la presqu'île de Quiberon (A
la différence de la Belgique, fait toujours beau en Bretagne, par
contre y z'ont les frites et la bière ;-) ) :
Bonjour pierre.rivet,
pierre.rivet a écrit :
Bonjour Jacques,
Pour ceux qui ne connaissent pas, l'image "Conguel.tif", que j'ai
indiqué dans le code et utilisée a été récupérée sur le forum Bretagne
de news.zoo-logique.org. Ca se trouve sur la presqu'île de Quiberon (A
la différence de la Belgique, fait toujours beau en Bretagne, par
contre y z'ont les frites et la bière ;-) ) :
Bonjour pierre.rivet,
pierre.rivet a écrit :Bonjour Jacques,
Pour ceux qui ne connaissent pas, l'image "Conguel.tif", que j'ai
indiqué dans le code et utilisée a été récupérée sur le forum Bretagne
de news.zoo-logique.org. Ca se trouve sur la presqu'île de Quiberon (A
la différence de la Belgique, fait toujours beau en Bretagne, par
contre y z'ont les frites et la bière ;-) ) :
Jacques93 wrote:Bonjour pierre.rivet,
pierre.rivet a écrit :Bonjour Jacques,Pour ceux qui ne connaissent pas, l'image "Conguel.tif", que j'ai
indiqué dans le code et utilisée a été récupérée sur le forum Bretagne
de news.zoo-logique.org. Ca se trouve sur la presqu'île de Quiberon (A
la différence de la Belgique, fait toujours beau en Bretagne, par
contre y z'ont les frites et la bière ;-) ) :
Olivier de Kersauzon, que je croise de temps en temps à la Trinité,
a coutume de dire : "En Bretagne, il ne pleut que sur les cons.".
En ce moment en belgique, il fait un temps très breton, avec un
agréable petit crachin... On s'y croirait!
Bon dimanche,
Jacques93 wrote:
Bonjour pierre.rivet,
pierre.rivet a écrit :
Bonjour Jacques,
Pour ceux qui ne connaissent pas, l'image "Conguel.tif", que j'ai
indiqué dans le code et utilisée a été récupérée sur le forum Bretagne
de news.zoo-logique.org. Ca se trouve sur la presqu'île de Quiberon (A
la différence de la Belgique, fait toujours beau en Bretagne, par
contre y z'ont les frites et la bière ;-) ) :
Olivier de Kersauzon, que je croise de temps en temps à la Trinité,
a coutume de dire : "En Bretagne, il ne pleut que sur les cons.".
En ce moment en belgique, il fait un temps très breton, avec un
agréable petit crachin... On s'y croirait!
Bon dimanche,
Jacques93 wrote:Bonjour pierre.rivet,
pierre.rivet a écrit :Bonjour Jacques,Pour ceux qui ne connaissent pas, l'image "Conguel.tif", que j'ai
indiqué dans le code et utilisée a été récupérée sur le forum Bretagne
de news.zoo-logique.org. Ca se trouve sur la presqu'île de Quiberon (A
la différence de la Belgique, fait toujours beau en Bretagne, par
contre y z'ont les frites et la bière ;-) ) :
Olivier de Kersauzon, que je croise de temps en temps à la Trinité,
a coutume de dire : "En Bretagne, il ne pleut que sur les cons.".
En ce moment en belgique, il fait un temps très breton, avec un
agréable petit crachin... On s'y croirait!
Bon dimanche,