2 pièce(s) jointe(s)
Obtenir et utiliser un TFMXObject du style pour un élément d'un ListView
Bonjour,
Le titre ne fait pas totalement le tour de la question.
Disons que j'ai déjà utilisé des images pour colorer certains éléments d'une liste, sujet de tutoriels comme de billets de ma part.
Cette fois j'ai voulu aller un peu plus loin en voulant obtenir la "couleur" de sélection selon le style de cette manière
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| var AStyle,aElement : TFMXObject;
aBounds : TBounds;
aRect : TRect;
begin
// obtenir image du style Selection
aBitMap := TBitmap.Create(40,40);
AStyle:=TStyleManager.ActiveStyle(Self);
aElement:=aStyle.FindStyleResource('listviewstyle.selection');
if aElement is TStyleObject then
begin
if Assigned(TStyleObject(aElement).SourceLink) then
begin
aBounds:=TBitmapLinks(TStyleObject(aElement).SourceLink).Links[0].SourceRect;
aRect:=TRect.Create(Trunc(aBounds.Left),Trunc(aBounds.Top),Trunc(aBounds.Right),Trunc(aBounds.Bottom));
ABitmap.Width:=ARect.Right-ARect.Left;
ABitmap.Height:=ARect.Bottom-ARect.Top;
aBitmap.CopyFromBitmap(TImage(aStyle.FindStyleResource(TStyleObject(aElement).sourcelookup)).Bitmap,aRect,0,0);
end
else ABitmap.Clear($FF3FB8C6);;
end;
.... |
Pas de souci majeur de ce côté, j'obtiens bien l'image
Pièce jointe 553188
le souci c'est à l'application
Pièce jointe 553192
Vous remarquez certainement la déformation des coins , logique puisque mon image qui sert de fond est étirée (stretched).
La question en découle, comment faire pour ne pas avoir de déformation ? Delphi y arrive donc c'est possible, avant de plonger dans les sources, une idée ?