Hat jemand einen Code, um einen glatten Kuchen auf einer Leinwand in Delphi zu zeichnen?Delphi, das eine glatte Torte zeichnet
Alles, was ich im Internet finden konnte, sind Beispiele für glatte Linien, aber das hilft mir nicht viel ... Auch ich dachte Gr32, aber für was ich brauche, fügt es einen ziemlich großen Fußabdruck zu meiner App. Ich brauche nur eine gefüllte Torte auf einer Leinwand zu zeichnen, die nicht so schrecklich sehen, wie es mit dem Standard-
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
tut verwende ich Delphi XE, so dass keine Firemonkey ...
der Kuchen auf der linken Seite wird nach Ihrer Empfehlung erhalten Sie den folgenden Code @johan mit:
procedure TForm1.Button4Click(Sender: TObject);
var
Center:TPoint;
Radius:integer;
Bmp: TBitmap;
MF: TMetaFile;
MetafileCanvas: TMetafileCanvas;
begin
MF := TMetaFile.Create;
MF.Width := 150;
MF.Height := 150;
MetafileCanvas := TMetafileCanvas.Create(MF, 0);
MetafileCanvas.Pen.Color := clRed;
MetafileCanvas.Brush.Color := clRed;
MetafileCanvas.Brush.Style := bsSolid;
MetafileCanvas.Pie(0,0,150, 150, 150,50, 150,50);
MetafileCanvas.Free;
Bmp := Gdip.DrawAntiAliased(MF);
Image2.Picture.Assign(Bmp);
Bmp.Free;
MF.Free;
end;
Dank
Leider ist dies nicht das, was ich brauchte. Der Kuchen auf der Leinwand ist eckig ... nicht glatt. Ich brauche eine Zeichenfunktion, die glatte Kanten hat. Bitte überprüfen Sie das Bild, das ich zu der Frage hinzugefügt habe – user1137313
Was Sie glatt nennen der Rest der Welt ruft Anti-Aliasing. Genau das bietet meine Antwort. .Net tut dies, indem es GDI + verwendet, was wiederum genau das ist, was der verknüpfte Code in der Antwort bietet. – Johan
Ok, warum zeigt das obige Bild einen Kuchen, der mit Ihrem Code gezeichnet wurde und nicht mit Antialiasing versehen ist? Es scheint, dass die Antialias-Zeichnung getan wird, NACHDEM der Kuchen gezeichnet wurde ... Ich habe gerade den Pinsel-Stil in den Code geändert und die Größe geändert, und der Kuchen sieht wie der linke (im obigen Bild) aus sollte wie der in der rechten aussehen – user1137313