Bonjour,
Je cherche des pistes pour mieux définir mon analyse de gradient.
Mon programme test est basique. Au design je créé un rectangle avec un gradient.
puis via le onclick j'utilise ce code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm3.Rectangle2Click(Sender: TObject); var bmp : Tbitmap; dbmp : TBitmapData; dobreak : boolean; x,y :integer; begin bmp:=Rectangle2.MakeScreenshot; bmp.Map(TMapAccess.read,dbmp); var tcolor:=dbmp.GetPixel(0,0); // topleft var cColor:=dbmp.GetPixel(dbmp.width div 2, dbmp.height div 2); // center radiant.text:=format('%s %s',[AlphaColorToString(tcolor), AlphaColorToString(ccolor)]); bmp.Unmap(dbmp); freeandnil(bmp); end;
Facile, oui, mais, ce n'est qu'un exemple particulier !
Comment détecter le type (radial dans cet exemple) et surtout le centre ?
Dans le cas d'un gradient linéaire cela devient encore plus compliqué puisque l'angle va jouer !
Et enfin, je ne me suis arrêté qu'à deux couleurs or les possibilités des gradients (même si je trouve que le designer est plutôt bogué) sont énormes.
Il y a déjà un bail, j'avais fait un truc par code pour un composant led
. Cet aparté me fait penser que depuis 2022 les choses ont peut-être changé
Vous vous poserez peut-être la question du pourquoi je me casse la tête. Ma réponse : cela concerne toujours les styles firemonkey
Comment extraire le gradient du style Calypso complexe puisqu'il me semble qu'il est impossible à réaliser avec Delphi, il doit manquer les gradients de type conique et mesh (encore que pour ce dernier je pense que ce n'est qu'un problème de centre)









Répondre avec citation







:
Partager