FMX.Graphics.TCanvas.ExcludeClipRect
Delphi
procedure ExcludeClipRect(const ARect: TRectF); virtual; abstract;
C++
virtual void __fastcall ExcludeClipRect(const System::Types::TRectF &ARect) = 0 ;
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
procedure function |
public | FMX.Graphics.pas FMX.Graphics.hpp |
FMX.Graphics | TCanvas |
Description
Exclut une zone rectangulaire d'une zone de délimitation de TCanvas.
ExcludeClipRect est implémenté par les descendants de TCanvas pour exclure la zone rectangulaire spécifiée de la zone de dessin de TCanvas.
Le paramètre ARect
spécifie la zone rectangulaire à exclure (le dessin n'aura aucun effet dans cette zone).
Si ARect
est vide, ExcludeClipRect ne fait rien. Cela ne déclenche aucune erreur.
Remarque: Le rectangle de délimitation ne fonctionne que si l'état du canevas est d'abord enregistré en utilisant SaveState.
Exemples
Exemple de structure de code :
var
MyCanvas: TCanvas;
Save: TCanvasSaveState;
MyRect : TRectF;
begin
try
Save := MyCanvas.SaveState;
// Create the clipping rectangle
MyRect.Create (20, 20, 100, 100);
MyCanvas.ExcludeClipRect (MyRect);
// Do your drawing here
finally
MyCanvas.RestoreState(Save);
end;
end;
Exemple de démo complet :
procedure TForm1.ExcludeBtnClick(Sender: TObject);
var
Canvas: TCanvas;
MyRect: TRectF;
Save: TCanvasSaveState;
begin
Canvas := Image1.Bitmap.Canvas;
MyRect := TRectF.Create(TPointF.Create(50, 50), 160, 160);
Canvas.BeginScene;
try
Save := Canvas.SaveState;
try
Canvas.ExcludeClipRect(MyRect);
Canvas.Stroke.Color := TAlphaColorRec.Lime;
Canvas.Stroke.Thickness := 3;
Canvas.Stroke.Dash := TStrokeDash.Dash;
Canvas.DrawRect(MyRect, 0, 0, [], 1);
Canvas.Fill.Color := TAlphaColorRec.Aqua;
Canvas.Fill.Kind := TBrushKind.Solid;
Canvas.FillEllipse(TRectF.Create(TPointF.Create(10, 10), 125, 125), 100);
finally
Canvas.RestoreState(Save);
end;
finally
Canvas.EndScene;
end;
end;