Как сделать antialias для данного кода ? Или как нарисовать подобное на канве с антиалиасом?
| Код | procedure DrawMoon( XCanvas: TCanvas); Var W : Integer; Phasex, Phase : Extended; alpha,delta,dist,dkm,diam, phasex,illum : double; begin // Phase:=GetPhase(now);
illum := 0,25; Phasex := 180;
If phasex < 180 Then Phase:=(illum) Else Phase:=-(illum);
With XCanvas do Begin
W:=ClipRect.Right-ClipRect.Left;
Brush.Color:=$e3e3e3; // clWhite; Brush.Style:=bsSolid; Pen.Style := psClear; Rectangle(ClipRect.Left, ClipRect.Top, ClipRect.Right+1, ClipRect.Bottom+1); // Фон Brush.Color:=clBlack; Brush.Style:=bsSolid; Pen.Style := psSolid; Pen.Color:=clBlack; Ellipse(ClipRect.Left, ClipRect.Top, ClipRect.Right, ClipRect.Bottom); If Abs(Phase) < 0.01 Then Exit; Brush.Color:=clWhite; If Phase > 0 Then Pie(ClipRect.Left, ClipRect.Top, ClipRect.Right, ClipRect.Bottom, ClipRect.Left+ (W div 2), ClipRect.Bottom, ClipRect.Left+ (W div 2), ClipRect.Top) Else Pie(ClipRect.Left, ClipRect.Top, ClipRect.Right, ClipRect.Bottom, ClipRect.Left+ (W div 2), ClipRect.Top, ClipRect.Left+ (W div 2), ClipRect.Bottom); If (Abs(Phase) >= 0.48) And (Abs(Phase) <= 0.52) Then Exit; If Abs(Phase) < 0.5 Then Brush.Color:=clBlack; Pen.Color:=Brush.Color; Ellipse(ClipRect.Left+Round(W-W*Abs(Phase)), ClipRect.Top, ClipRect.Left+Round(W*Abs(Phase)), ClipRect.Bottom); Pen.Color:=clBlack; Brush.Color:=$e3e3e3; // clWhite; Brush.Style:=bsClear; Ellipse(ClipRect.Left, ClipRect.Top, ClipRect.Right, ClipRect.Bottom); {} End end;
|
|