Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TStringGrid, OnwerDraw, Kreis sieht komisch aus (https://www.delphipraxis.net/122814-tstringgrid-onwerdraw-kreis-sieht-komisch-aus.html)

hoika 22. Okt 2008 14:09


TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Hallo #,

ich male einen Kreis in einer Zelle

OnDrawCell
c ist der Canvas

Inc(ARect.Left,4);
Inc(ARect.Top,4);
Dec(ARect.Right,4);
Dec(ARect.Bottom,4);

c.Ellipse(ARect);

Der Kreis sieht aber komisch aus,
irgendwie eckig.

Ich weiss (aus Grafik in Informatik) dass Treppenstufen unvermeidbar sind,
aber war da mal nicht was, dass der rechte untere Punkt des Rechtecks nicht mitzählt ??

Danke


Heiko

Helmi 22. Okt 2008 14:14

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
was ist "ARect"?

hoika 22. Okt 2008 14:18

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Hallo,

procedure TForm.GridDrawCell(Sender: TObject;
ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);

Das Rect hier
also das Rechteck um eine Zelle.


Heiko

DeddyH 22. Okt 2008 14:23

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Wenn das umgebende Rect zu klein ist, sieht der resultierende Kreis immer suboptimal aus. Evtl. könnte man das mit AntiAliasing etwas mildern.

Helmi 22. Okt 2008 14:26

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Zitat:

Zitat von hoika
Das Rect hier
also das Rechteck um eine Zelle.

Ist das ein Rechteck oder ein Quadrat?

Bei einem Quadrat würde der Kreis rund werden, mit dem Code von deinem ersten Thread.
Bei einem Rechteck muss der Kreis ja "eiern" weil die Ecken, also X1, Y1 und X2, Y2
nicht gleich weit auseinander liegen. Sprich die Differenz der X-Werte ist größer
als die Differenz der Y-Werte. (oder anderes rum, je nach ob die Zelle breiter oder
höher ist)

DeddyH 22. Okt 2008 14:30

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Das hat mit Quadrat oder Rechteck IMO weniger zu tun. Erstell doch mal ein neues Projekt und pack dies hier ins OnPaint:
Delphi-Quellcode:
procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Ellipse(10,10,20,20);
  Canvas.Ellipse(10,30,25,45);
  Canvas.Ellipse(10,55,30,75);
  Canvas.Ellipse(10,85,50,125);
end;
Hat teilweise eher etwas von einem Kreissägeblatt als von einem Kreis.

hoika 22. Okt 2008 14:40

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Hallo,

jepp, das ist mein Problem.

Ich habe Höhe = Breite = 45.



Heiko

Helmi 22. Okt 2008 14:46

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Zitat:

Zitat von DeddyH
Das hat mit Quadrat oder Rechteck IMO weniger zu tun.

Ich denke schon dass das ein wichtiger Punkt ist.
Denn das Rect gibt ja nur die Ecke an, keinen Mittelpunkt oder Radius (sonst
könnte man ja keine Ellipse zeichnen).

Aber gut, das hat sich erledigt, weil ja Höhe und Breite gleich ist

[Edit]
Zeig doch mal ein Bild wie es ausschaut
[/Edit]

DeddyH 22. Okt 2008 14:46

Re: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kann man evtl. etwas mit GDI+ machen? Hab gerade mal einen meiner runden Buttons mit den Maßen aufs Form gepackt, der sieht gar nicht schlecht aus.

[edit] Bild im Anhang [/edit]

hoika 22. Apr 2013 08:00

AW: TStringGrid, OnwerDraw, Kreis sieht komisch aus
 
Hallo,

ich greife das noch mal auf ...
Jetzt bräuchet ich nämlich auch runde Buttons ;)
Gibt es da bereits fertige Komponenten ?
Ich habe hier TMS zur Verfügung.

Danke


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz