Bonjour à tous,
Petite question : A t-on moyen de connaitre la taille d'une image contenue dans une ImageList, disons par exemple, si je veux connaitre la taille en pixel de l'image n° 4 ?
Bonjour à tous,
Petite question : A t-on moyen de connaitre la taille d'une image contenue dans une ImageList, disons par exemple, si je veux connaitre la taille en pixel de l'image n° 4 ?
Bonjour,
donc les tailles sont celles indiquées par les propriétés Height et Width du composant.Envoyé par docwiki
La problématique serait différente (mais le composant aussi) s'il y a prise en charge d'images hautes résolution
SergioMaster,
D'accord, mais dans un autre post nous avions vu que la taille max était de 24x24, du coup on peut aussi avoir des images de 16x16 par exemple au milieu et donc le Height et Width devraient alors changer pour donner la taille de chacune des images ce qui semble ne pas être le cas
Si j'en crois la documentation en ligne :
Autrement dit, j'imagine qu'ajouter une image qui ne soit pas aux dimensions attendues échouera (Add renvoie -1) ou l'image sera stockée dans ce Bitmap patchwork, adressé j'imagine comme un tableau, à la dimension commune et en perdant de vue sa taille d'origine.All images in an image list are contained in a single, wide bitmap in screen device format.
Bonjour
Non, je ne crois pas qu'il y ait de restriction quant à la taille des images d'une TImageList (à moins que ce ne soit une question de débordement de variable).
TImageList ne fonctionne pas comme ça. Il retaille les images en fonction de la taille indiquée.on peut aussi avoir des images de 16x16 par exemple au milieu et donc le Height et Width devraient alors changer pour donner la taille de chacune des images ce qui semble ne pas être le cas
Par exemple :
si vous mettez une image de 48x48 dans une TimageList de 24x24 une question est posée : "voulez-vous scinder en 4 images ?" si vous n'acceptez pas, l'image sera "condensée" en 24x24 entrainant, dans le cas d'images plus importantes une perte notable de définition
Dans l'autre sens, si vous mettez une image 16x16 dans un TImagelist 24x24 cette image sera "pixelisée" pour obtenir une image 24x24 (pas flagrant mais quand même)
C'est pour cela, entre autres, que sont apparus, dernièrement, les TImageCollection et TVirtualImageList (plus pour les problèmes de résolution d'écran que ce cas très particulier)
À mon avis, si vous voulez mêler différentes tailles d'images sans peine il vaut mieux passer par les ressources
Bonjour,
J'utilise l'imageList de la VCL.
J'utilise une image de l'imageList (un simple carré rouge) que je mets dans une cellule d'une StringGrid et j'aimerai avoir la taille de cette image pour pouvoir mettre le ColWidths de la colonne à la bonne taille afin de voir l'image correctement.
D'où mon idée d'avoir la taille de l'image ... (tiens ça me donne l'idée d'une nouvelle recherche ... car comment savoir si une cellule a une image dedans ou pas ?)
je l'avais bien compris
ImageList.Width, soit Stringrid1.ColWidths[1]:=Imagelist1.Width;J'utilise une image de l'imageList (un simple carré rouge) que je mets dans une cellule d'une StringGrid et j'aimerai avoir la taille de cette image pour pouvoir mettre le ColWidths de la colonne à la bonne taille afin de voir l'image correctement.
Il n'y a pas à tortiller cela reste la taille définie par les propiétés du TImageListD'où mon idée d'avoir la taille de l'image
AMHA pas moyen(tiens ça me donne l'idée d'une nouvelle recherche ... car comment savoir si une cellule a une image dedans ou pas ?)
L'ImageList est une bibliothèque d'images de taille fixe. Si à l’insertion l'image ne correspond pas, elle est ajustée (stretch-ée, rognée, centrée) pour tenir dedans. Toutes les images ont la même hauteur/largeur.
Correctement ici (avec une ImageList) veut dire dans le même rapport hauteur/largeur que l'image d'origine mais pas forcément à la même résolution.
Pour ça, il faudrait que la cellule ait une propriété Picture. Ce qui se fait par Draw n'est pas identifiable.
Elle s'appelle un atlas (ou texture atlas) (<- lien wiki en anglais) et c'est utilisé essentiellement dans les jeux vidéos pour éviter de faire trop de chargements.
J'avais mis en place un atlas avec Embarcadero XE/ XE6 avec la bibliothèque Graphics32 parce qu'on avait accès à la "scanline" avec le type TImage32 (image_view->Bitmap->ScanLine[ ]) pour recopier l'image le + rapidement possible ... tout en respectant la transparence avec la couleur du fond (petit calcul qu'on trouve facilement)
C'est aussi utiliser dans le développement Web (Google le fait pour la page google) mais très peu parce qu'il faut pouvoir contraindre son image en longueur et en largeur afin de ne pas déborder (en Web on recopie et on boucle sur l'image (<- propriété CSS) tant que c'est nécessaire)
Les Styles VCL n'utiliserait pas aussi un "texture atlas" ?
Sinon, il faudrait peut-être utilisé autre chose qu'une ImageList si patrice@ souhaite des images de taille variable aux formats variés
Les Ressources devraient être adaptée pour stocker plusieurs images de taille variable servant de sprite
Si il y a peu de résolution différente comme juste 16x16 et 24x24, deux images ImageList feront bien le travail
C'est utile avec des applications que l'on zoom avec ScaleBy, remplacer l'ImageList courante pour avoir des icones plus grand et propre
En tout cas, ce sujet semble bien simple dans le fond mais inutilement complexifié, la même chose dans "Coordonnées exactes du bord d'une cellule d'un StringGrid", faudrait un peu se poser et au lieu de perdre du temps à écrire sur le forum, essayez d'approfondir la manipulation des composants VCL et Canvas
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager