Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Kreis zeichnen mit gestrichelter Linie und Stärke mehr als 1 (https://www.delphipraxis.net/133668-kreis-zeichnen-mit-gestrichelter-linie-und-staerke-mehr-als-1-a.html)

mtc 6. Mai 2009 20:03


Kreis zeichnen mit gestrichelter Linie und Stärke mehr als 1
 
Hallo liebe Gemeinde,

und zwar habe ich folgendes Problem.

Ich möchte einen Kreis zeichnen und die Umrandung soll gestrichelt sein.
Leider gibt es ja die Beschränkung, dass gestrichelt nur mit Linienstärke 1 gibt.

Kann man diese aufheben, weil ich benötige einen Linienstärke von mindesten 3.

Danke schonmal im Voraus.

Gruß,
MTC

[edit=SirThornberry]Titel korrigiert ("mehr als" oder "gleich wie" aber bitte nicht "mehr wie") Mfg, SirThornberry[/edit]

3_of_8 6. Mai 2009 20:06

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr w
 
Hab jetzt kein Delphi da, aber... nimmste dir ein Canvas und stellst beim Pen, die Width (oder wie das heißt) auf 3, den Style auf psDash (glaub ich, schlag das einfach nach) und zeichnest ne Ellipse.

Achj aund. mehr _als_. "Wie" tut weh...

mtc 6. Mai 2009 20:40

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Und genau das macht Delphi nicht.

Denn sobald ich psDash einstelle, wird Width automatisch auf 1 gesetzt.

Gruß,
MTC

jfheins 6. Mai 2009 20:51

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Selber schreiben :stupid:

Mit der Funktion Arc() (iirc) die Striche zeichnen und entsprechende Lücken lassen ;)

mr_emre_d 6. Mai 2009 21:53

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Ich habe nichts zu tun .. (langeweile):

Delphi-Quellcode:
procedure DashEllipse( ACanvas: TCanvas; const Center: TPoint;
  const Radius: Cardinal; const PenWidth: Byte = 1;
  const Distance: Byte = 4 );
var
  i, x: Integer;
begin
  X := (360 div Distance);
  with ACanvas do
  begin
    Pen.Width := PenWidth;
    for i := 0 to X do
      if i mod 2 = 0 then
        Arc(
          Center.X-Radius, Center.Y-Radius, Center.X+Radius, Center.Y+Radius,
          Center.X + Round( cos(  i*Distance*PI/180)*Radius )          , Center.Y + Round( sin(  i*Distance*PI/180)*Radius ),
          Center.X + Round( cos( (i*Distance-Distance)*PI/180)*Radius ) , Center.Y + Round( sin( (i*Distance-Distance)*PI/180)*Radius )
        );
  end;
end;
Beispielsaufruf:
Delphi-Quellcode:

procedure TForm1.FormPaint(Sender: TObject);
begin
  DashEllipse( Canvas, Point( 200, 120 ), 100, 3 );
end;
MfG :P

mtc 6. Mai 2009 22:17

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
WOW,

echt vielen Dank und vor allem für das super Beispiel.
An das ARC hatte ich überhaupt nicht gedacht, weil ich zum ersten Mal etwas mit Canvas veranstalte.

Supi und Danke nochmal.

Gruß,
MTC

mr_emre_d 6. Mai 2009 22:22

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Büdde :)

Hawkeye219 6. Mai 2009 22:36

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Herzlich willkommen in der Delphi-PRAXiS, mtc!

Eine Alternative zu obigem Vorschlag wäre die Verwendung von geometric pens. Es gibt dazu auch ein Beispiel in der DP.

Gruß Hawkeye

mtc 6. Mai 2009 22:40

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Ich hab noch ein weiteres Problem.

Und zwar geht das Ganze auch für ein Polygon, welches zum Beispiel aus 10 Punkten besteht?

Ich muss nämlich mehrere Figuren zeichnen und die Strichstärke muss anpassbar sein.
Und zwar einmal in der Stärke (Width) und zum anderen in dem Style (gepunktet, gestrichelt).

Wäre echt super, wenn ihr mir da noch weiterhelfen könntet.

Danke und Gruß,
MTC

mr_emre_d 6. Mai 2009 22:55

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
ein Polygon (TPolygon) ist nur ein Array aus Punkten (TPoint) -> Du müsstest in einer Schleife alle Punkte durchgehen und der Funktion (DashEllipse) als Center die einzelnen Punkte übergeben!

Versuchs mal selbst; anschließend helf ich dir!

MfG

jfheins 6. Mai 2009 22:59

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Wobei ein Polygon wahrscheinlich besser mit Linien (LineTo) als mit Kreisbögen gezeichnet wird :angel2:

mr_emre_d 6. Mai 2009 23:13

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Ich dachte mir, er will die Eckpunkte des/der Polygon-s/e als gestrichelte Kreise darstellen :roll:

MfG

mtc 6. Mai 2009 23:47

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Sorry wenn ich vielleicht nicht präzise genug war.

Aber jfheins hat Recht.
Ich möchte gern ein Polygon zeichnen und die Umrandungslinie soll gestrichelt oder gepunktet sein.

Sprich z.B: ein Dreieck welches mit einer gestrichelten oder gepunkteten Linie erstellt worden ist.

mr_emre_d 6. Mai 2009 23:52

Re: Kreis zeichnen mit gestrichelter Linie und Stärke mehr a
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal etwas >>Sinnfreies<< angehangen..

MfG

DP-Maintenance 17. Okt 2009 12:25

DP-Maintenance
 
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Multimedia" verschoben.
Das ist eher eine Frage als ein Vorschlag für die Codelib. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:11 Uhr.

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