Online
Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.103 Beiträge
Delphi 10 Seattle Enterprise
|
Re: Eine Region erzeugen mit BeginPath ... EndPath
28. Jan 2007, 21:39
Zitat von Hawkeye219:
Hallo Kostas,
es ist tatsächlich nicht ganz einfach. Nach vielen vergeblichen Versuchen mit Arc hat es schließlich mit AngleArc funktioniert:
Delphi-Quellcode:
BeginPath(Canvas.Handle);
MoveToEx(Canvas.Handle, s2.x, s2.y, nil);
AngleArc(Canvas.Handle, offset.x, offset.y, r1 div 2, -TrackBar2.Position, -TrackBar1.Position);
AngleArc(Canvas.Handle, offset.x, offset.y, r2 div 2, -(TrackBar2.Position + TrackBar1.Position), TrackBar1.Position);
EndPath(Canvas.Handle);
Gruß Hawkeye
Herzlichen Dank Hawkeye219,
es funkt einwandfrei, und der code ist auch schlanker geworden.
Gruß Kostas
Delphi-Quellcode:
var
offset,s:TPoint;
R1,R2:integer;
Alpha:real;
Region : HRGN;
FillColor:TBrush;
begin
//Zentrum des Bogens
offset.x:=300;
offset.y:=300;
R1:=200; //Äußerer Bogen
R2:=140; //Innerer Bogen
Alpha := DegToRad(TrackBar2.position); //Startwinkel
//Startpunkt der Schnittpunktlinie Bogen innen
s.x := offset.x + Round((r2 div 2) * (cos(Alpha)));
s.y := offset.y + Round((r2 div 2) * (sin(Alpha)));
canvas.brush.Color:=clWhite;
canvas.FillRect(canvas.ClipRect);
Canvas.brush.Color:=clRed;
BeginPath(Canvas.Handle);
MoveToEx(Canvas.Handle, s.x, s.y, nil);
AngleArc(Canvas.Handle, offset.x, offset.y, r1 div 2, -TrackBar2.Position, -TrackBar1.Position);
AngleArc(Canvas.Handle, offset.x, offset.y, r2 div 2, -(TrackBar2.Position + TrackBar1.Position), TrackBar1.Position);
EndPath(Canvas.Handle);
FillPath(Canvas.Handle);
|
|
Zitat
|