2016-10-19 1 views
-1

J'utilise Delphi 10.1 Berlin et j'ai besoin de créer une image et de définir sa taille Canvas égale à la taille de bitmap. Pour être plus précis je veux accéder à ces propriétés: enter image description hereComment accéder à l'information de taille d'une image via le code

Où dire: "Dimensionné par l'image". Mais je ne peux pas comprendre comment puis-je accéder à cela, aidez s'il vous plaît! :-D

EDIT: Voici le code que j'utilise, si vous les gars ont besoin de mieux comprendre ce que je suis en train de réaliser:

imgProdutoZoom := TImage.Create(rtFundoArredondadoZoom); 
imgProdutoZoom.Parent := rtFundoArredondadoZoom; 
imgProdutoZoom.Align := TAlignLayout.Client; 
imgProdutoZoom.Bitmap.Assign(imgProduto.Bitmap); 
imgProdutoZoom.WrapMode := TImageWrapMode.Fit; 
imgProdutoZoom.Name := 'imgZoom'+ IntToStr(i); 

Je trouve ce code: imgProdutoZoom.MultiResBitmap.SizeKind.Source; Mais le console me donner une erreur: '[erreur dcc32] MainFrm.pas (628): E2018 Enregistrement, objet ou type de classe requis'

+0

Je ne suis pas sûr si j'ai la bonne question. Mais la résolution de l'original ne doit pas être imgProducto.Bitmap.Height et imgProducto.Bitmap.Width?. Est-ce ce que vous cherchez? –

+0

Je veux juste avoir accès à cette propriété "Seize by image". Je ne veux pas la hauteur et la largeur de mon image –

+0

Je peux me tromper, mais je ne pense pas que ce soit une propriété. Si vous voulez définir la taille de votre TImage exactement comme la source originale, alors faites simplement: imgProdutoZoom.Height: = imgProduto.Bitmap.Height; et imgProductoZoom.Width: = imgProduto.Bitmap.Width; –

Répondre

3

Vous n'avez pas montré ce que rtFundoArredondadoZoom est, mais je suppose que c'est un TRectangle.

Lorsque vous définissez

imgProdutoZoom.Parent := rtFundoArredondadoZoom; 
imgProdutoZoom.Align := TAlignLayout.Client; 

vous dites à remplir la zone du parent (rtFundoArredondadoZoom). Cependant, puisque TImage.WrapMode par défaut est TImageWrapMode.Fit, l'image conserve son format et ne s'étire pas pour remplir le parent. Maintenant, le facteur limitant dans votre configuration est le rectangle rtFundoArredondadoZoom, et en particulier sa hauteur. Pour afficher l'image dans sa taille réelle, vous devez définir

rtFundoArredondadoZoom.Height := imgProdutoZoom.Bitmap.Height; 

Vous pouvez parfois vouloir également régler la largeur du rectangle.

L'image suivante montre une image dans sa taille originale à gauche, et te même image sur un rectangle avec une hauteur plus petite en utilisant essentiellement votre code

enter image description here

Puis, après l'application de la réglage en hauteur sur le rectangle

enter image description here

Votre code corrigé en conséquence serait:

imgProdutoZoom := TImage.Create(rtFundoArredondadoZoom); 
imgProdutoZoom.Parent := rtFundoArredondadoZoom; 
imgProdutoZoom.Align := TAlignLayout.Client; 
imgProdutoZoom.Bitmap.Assign(imgProduto.Bitmap); 
// imgProdutoZoom.WrapMode := TImageWrapMode.Fit; // not needed 
rtFundoArredondadoZoom.Height := imgProdutoZoom.Bitmap.Height; // add this 
imgProdutoZoom.Name := 'imgZoom'+ IntToStr(i);