2009-08-11 4 views
3

Je souhaite obtenir la taille actuelle d'une image affichée avec TImage, cet objet a la propriété Proportional définie sur True et est alignée sur Client avec le formulaire principal. Donc, lorsque je redimensionne le formulaire, je veux obtenir la taille actuelle pour cette image, pas la taille de la toile ni la taille réelle pour cette image. Obtenir la taille actuelle Je peux montrer quel est le pourcentage de la taille actuelle de l'image par rapport à la taille réelle de l'image. Merci d'avanceComment obtenir la taille de vue actuelle d'une image dans Delphi 2009

Répondre

1

Vous pouvez comparer Image1.Picture.Width ou .Height avec Image1.Width ou .Height.

Pour savoir si l'image est streched proportionnelle en utilisant la dimension horizontale ou verticale, vous devez comparer le rapport de des deux:

if Image1.Width/Image1.Height > Image1.Picture.Width/Image1.Picture.Height then 
    Result:=Image1.Picture.Width/Image1.Width 
else 
    Result:=Image1.Picture.Height/Image1.Height; 

utilisant une astuce mathématique pour convertir les divisions en multiplications, vous pouvez éviter la conversions en valeurs flottantes, qui calculent également un peu plus rapidement en utilisant:

if Image1.Width*Image1.Picture.Height >Image1.Picture.Width*Image1.Height then 
4

Je ne pense pas qu'il existe un moyen intégré de faire cela. Vous pouvez juste devoir le calculer. Quelque chose comme ceci:

  1. Obtenez la hauteur et la largeur de la toile.
  2. Obtenez la hauteur et la largeur de la propriété Picture de l'image.
  3. Calculez les proportions des dimensions de l'image par rapport aux dimensions du canevas.
  4. Le plus petit de ces deux ratios est votre pourcentage.
+0

Drat! J'étais à trois frappes et à un clic de poster cette même réponse! Tu es trop rapide, Mason. –

0

Chargez cette image dans un TCanvas virtuel (ou autre), puis laissez la propriété Proportionnelle comme Faux. Vous pouvez maintenant récupérer la taille d'origine de l'image. Si l'image est généralement très grande, vous devriez peut-être utiliser des bibliothèques graphiques externes.

Questions connexes