Bonjour bonjour,
aujourd'hui on continue, dans la série "Lazarus est une catastrophe de non-compatibilité"...
Est-ce lié à Linux ? Je n'en sais rien, j'ai même la flemme de faire les tests sous Windows, vous allez voir il y a tellement peu de code que ça fait peur et pourtant, la catastrophe graphique est inversement proportionnelle à la faible quantité de code.
Qu'on en juge : je suis bêtement parti de cette discussion Delphi, simple comme tout :
en me disant "tiens tiens, on peut mettre une image dans un TShape ? Testons donc", et voilà mon code qui, en fait, tient en une ligne si on fait abstraction du chargement du fichier .bmp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 var image:TBitmap; begin image := TBitmap.Create; ImageList1.GetBitmap(0,image); Shape1.Brush.Bitmap:=image; end;
Voilà le résultat : à droite image1, un TImage qui contient l'image du fichier .bmp, et à gauche un grand TShape qui commence à 24 left, 16 top (ne tenez pas compte des chiffres au-dessus) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if not Ouvrir.Execute then exit; image1.Picture.Bitmap.LoadFromFile(Ouvrir.FileName); shape1.Brush.Bitmap := image1.Picture.Bitmap;
Si je fais commencer le TShape à 0,0, la première image, celle d'en haut à gauche, est entière, puisqu'elle est plus petite (96 x 96) que le TShape (232 x 240).
La bonne question est : mais pourquoi le TShape se croit-il obligé de dupliquer l'image pour se remplir intégralement ? On dirait du Windows 3.1 en mode mosaïque !
Ensuite je me suis amusé à le redimensionner à 48 x 48 et à en faire trois copies, positionnées côte à côte et avec un léger décalage concernant la hauteur pour les deux derniers :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 shape1.Brush.Bitmap := image1.Picture.Bitmap; shape2.Brush.Bitmap := image1.Picture.Bitmap; shape3.Brush.Bitmap := image1.Picture.Bitmap; shape4.Brush.Bitmap := image1.Picture.Bitmap;
Je vous passe le test du TShape ayant la même taille que le fichier image, le résultat est le même : le TShape se comporte comme une "fenêtre" ouverte sur la fiche, celle-ci ayant été au préalable remplie en mode mosaïque avec l'image du fichier .bmp.
Alors bien sûr ce genre de gag on ne le détecte pas tout de suite, on se dit qu'on a glissé une erreur dans le code mais là, vu qu'il n'y a qu'une ligne, ça devient difficile...
Partager