FMX.Graphics.TCanvas.IntersectClipRect
Delphi
procedure IntersectClipRect(const ARect: TRectF); virtual; abstract;
C++
virtual void __fastcall IntersectClipRect(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
Définit la zone de dessin en formant une intersection entre la zone de délimitation en cours de TCanvas et un rectangle.
Le paramètre ARect
spécifie la zone rectangulaire utilisée pour l'intersection.
Si ARect
est vide, IntersectClipRect 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.IntersectClipRect (MyRect);
// Do your drawing here
finally
MyCanvas.RestoreState(Save);
end;
end;
Exemple de démo complet :
procedure TForm1.IntersectBtnClick(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.InterSectClipRect(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.Red;
Canvas.Fill.Kind := TBrushKind.Solid;
Canvas.FillEllipse(TRectF.Create(TPointF.Create(100, 125), 275, 150), 100);
finally
Canvas.RestoreState(Save);
end;
finally
Canvas.EndScene;
end;
end;