Soyez le premier à donner votre avis sur cette source.
Vue 11 314 fois - Téléchargée 921 fois
' utilisation ImageRedim1.LoadImage App.Path & "\apercu.jpg" '-------------------------------------' ' Le code dans le control utilisateur ' '-------------------------------------' Private Sub UserControl_Resize() ' un petit cadre pour mieux voir la limite du control ' on aurait pu le colorier... Shape1.Top = 0 Shape1.Left = 0 Shape1.Width = UserControl.Width Shape1.Height = UserControl.Height ' Mon control IMAGE1... Image1.Top = 0 Image1.Left = 0 Image1.Width = UserControl.Width Image1.Height = UserControl.Height End Sub '----------------------------- Sub LoadImage(Filename As String) ' cache image1 du controle utilisateur Image1.Visible = False DoEvents Dim Ratio Dim Largeur_dispo As Long Dim Hauteur_dispo As Long ' Largeur du controle utilisateur Largeur_dispo = UserControl.Width ' Hauteur du controle utilisateur Hauteur_dispo = UserControl.Height ' Chargement des images Image1.Picture = LoadPicture(Filename) ' si l'image est + large que haute ou carré alors... If Image1.Picture.Width >= Image1.Picture.Height Then 2: ' La largeur = la largeur maximale dispo Image1.Width = Largeur_dispo ' Calcul du rapport proportionnel de l'image ( ratio ) Ratio = Image1.Picture.Height / Image1.Picture.Width ' La hauteur = largeur maximale dispo * le ratio Image1.Height = Largeur_dispo * Ratio ' Si la hauteur dépasse de la hauteur maxi alors se baser sur le calcul en largeur sinon centrer image If Image1.Height > Hauteur_dispo Then GoTo 1 Else GoTo fin: End If ' si l'image est - large que haute ... If Image1.Picture.Width < Image1.Picture.Height Then 1: ' La hauteur = la hauteur maximale dispo Image1.Height = Hauteur_dispo ' Calcul du rapport proportionnel de l'image ( ratio ) Ratio = Image1.Picture.Width / Image1.Picture.Height ' La largeur = hauteur maximale dispo * le ratio Image1.Width = Hauteur_dispo * Ratio ' Si la largeur dépasse de la largeur maxi alors se baser sur le calcul en largeur sinon centrer image If Image1.Width > Largeur_dispo Then GoTo 2 Else GoTo fin: End If fin: 'Centrage Image1.Top = (Hauteur_dispo - Image1.Height) / 2 Image1.Left = (Largeur_dispo - Image1.Width) / 2 DoEvents ' Affiche l'image Image1.Visible = True End Sub
Commentaire
1) indente ton code (ajoute des tabulations)
2) ajoute "Option Explicit" en haut de code pour pouvoir voir les éventuels problèmes lors de la compilation
3) "Dim Ratio" ==> "Dim Ration As Double". Ne jamais omettre le type, sinon çà déclare en Variant et c'est mal (consomme plus en mémoire et type très lent à manipuler)
4) "Shape1.Top = 0
Shape1.Left = 0
Shape1.Width = UserControl.Width
Shape1.Height UserControl.Height"
>
"With Shape1
.Top = 0
.Left = 0
.Width = UserControl.Width
.Height = UserControl.Height
End With" (plus clair à la relecture)
5) "Sub LoadImage" ==> "Public Sub LoadImage". Mettre de préférence de manière claire la portée des fonctions/procédures.
6) N'utilise PLUS JAMAIS de Goto ;) Très vieux style de programmation très difficile à relire, bien que rapide une fois compilé. Il est toujours possible de faire autrement qu'avec des Goto (sauf pour la gestion des erreurs).
7) DoEvents facultatifs ==> on les enlève (gagne du temps processeur et évite l'affreux clignotement)
8) Tant qu'à faire un UserControl, autant le faire complet (ajoute les properties Picture (comme çà on charge l'image dans l'IDE), ShapeColor, ShapeWidth, BackColor, ShapeStyle...etc.)
Bon courage ;)
@+
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.