Bonjour,
Mon besoin est simple , j'ai une Form en FMX qui possede un TPanel et je veux dessiner une ligne dans le TPanel.
Mon TPanel possede les props suivantes
Width = 300
Height = 200


La procedure qui dessine est la suivante :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm3.Button1Click(Sender: TObject);
var
    aCanvas:TCanvas;
begin
   aCanvas := Panel1.Canvas;
   if aCanvas.BeginScene then
  try
    aCanvas.Stroke.Thickness := 1.5;
    aCanvas.Stroke.Kind := TBrushKind.bkSolid;
    aCanvas.Fill.Color := TAlphaColorRec.Black;
    aCanvas.Fill.Kind := TBrushKind.bkSolid;
    aCanvas.DrawLine(PointF(0, 0),   PointF(300, 200),1);
  finally
    aCanvas.EndScene;
  end;
end;
On part bien de 0,0 qui devrait etre l'origine du composant Panel et aller au point opposé en bas à droite. Cette procédure devrait dessiner une diagonale.

Or le résultat est que la droite dessinée part bien de 0,0 mais celui de la Form propriétaire du TPanel et pas du TPanel lui-même.

Nom : Capture.jpg
Affichages : 342
Taille : 22,1 Ko


De plus quand on redimensionne la fenetre, le trait precedement tracé disparait.

Question 1) Chaque composant ne possede t il pas son propre Canvas ou bien partage il celui de la Form en dessous
Question 2) Y a t il un moyen de changer la gestion de l origine du Canvas d un composant sans faire un changement de repere à la mano
Question 3) Que faire pour persister le trait pour qu il ne disparaisse pas lors d'un redimensionement de fenetre

Merci d'avance.