Comment Centrer Dynamiquement une Image dans les Rapports de MS Reporting Services
Si vous avez déjà travaillé avec MS Reporting Services, vous avez peut-être constaté qu’il peut être délicat de centrer une image dans un rapport, surtout lorsque les dimensions de l’image sont inconnues pendant la phase de conception. Par défaut, l’élément d’image est ancré dans le coin supérieur gauche de l’espace alloué, ce qui peut entraîner des mises en page sous-optimales lorsque l’image est plus petite que la zone désignée.
Dans ce tutoriel, nous allons explorer une solution qui vous permet de centrer dynamiquement une image dans vos rapports en fonction des dimensions de l’image que vous récupérez à l’exécution.
Le Défi
Le principal défi est que l’image que vous souhaitez afficher peut être plus petite que l’espace prévu dans la mise en page du rapport. MS Reporting Services ne prend pas en charge nativement le centrage dynamique des images dans de tels cas. Cependant, avec quelques ajustements astucieux, vous pouvez surmonter cette limitation :
- Problème : Images ancrées dans le coin supérieur gauche.
- Besoin : Centrer des images avec des dimensions inconnues au moment de la conception.
La Solution
Avec l’aide de l’approche de Chris Hays, vous pouvez réussir à centrer des images en fonction de leurs dimensions à l’exécution. Voici un aperçu des étapes que vous devez suivre :
1. Définir la Taille de l’Image
Tout d’abord, assurez-vous que l’élément d’image est dimensionné selon vos mesures souhaitées, même si la taille exacte de l’image peut varier. Dans notre cas, nous allons définir les dimensions à 4,625 pouces de large par 1,125 pouces de haut.
- Propriété de Taille : Changez la propriété “Sizing” de l’élément d’image en “Clip.” Cela permet d’afficher l’image sans distorsion.
2. Définir Dynamiquement le Rembourrage Gauche
Ensuite, vous devez définir dynamiquement le rembourrage gauche de l’image en fonction de sa largeur. Utilisez l’expression suivante pour calculer le rembourrage gauche :
=CStr(Round((4.625 - System.Drawing.Image.FromStream(System.Net.WebRequest.Create(Parameters!LogoURL.Value).GetResponse().GetResponseStream()).Width / 96) / 2, 2)) & "in"
3. Définir Dynamiquement le Rembourrage Supérieur
De même, vous devrez également définir le rembourrage supérieur de manière dynamique en utilisant cette expression :
=CStr(Round((1.125 - System.Drawing.Image.FromStream(System.Net.WebRequest.Create(Parameters!LogoURL.Value).GetResponse().GetResponseStream()).Height / 96) / 2, 2)) & "in"
Modifications et Améliorations
Lors de la mise en œuvre de la solution ci-dessus, certaines modifications clés ont été apportées :
- Les dimensions de l’élément d’image ont été ajustées pour répondre à mes exigences spécifiques de 4,625 pouces de large par 1,125 pouces de haut.
- Le code a été modifié pour récupérer le flux de l’image à partir d’une URL plutôt que d’une base de données. Pour cela, j’ai utilisé
WebRequest.Create.GetResponse
, ce qui est très pratique pour récupérer des ressources en ligne.
Conclusion
En mettant en œuvre ces étapes, vous pouvez centrer efficacement des images dans vos rapports de MS Reporting Services, garantissant un aspect professionnel et soigné pour vos présentations. La méthode décrite met en lumière la puissance des expressions dynamiques et comment elles peuvent offrir de la flexibilité dans la conception des rapports.
Alors la prochaine fois que vous êtes amené à centrer dynamiquement une image, rappelez-vous de ce guide et rendez vos rapports significativement plus attrayants visuellement !