![]() |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
HiHo,
es wäre ganz sinnig, zu schreiben, _wie_ Delphi meckert. Es kann nämlich schon mal sein, dass mindestens drei Variablen nicht deklariert sind. Und wenn ich Compiler wäre und du mir ein Kuckucksei unterschieben versuchst, würde ich auch protestieren. :zwinker: Du Quadrat(wurzel)-Funktionen schaust du dir am besten mal ![]() ![]() MfG, hanselmansel |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Hey hanselmansel!
Was soll "distance" angeben? Ich versteh nicht so ganz, was das da alles bedeuten soll mit aRect und distance. Sorry, wenn ich nerve, aber ich kriegs beim besten willen nicht hin. |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Distance und Radius sollen wohl dasselbe sein. aRect (warum dieser Prefix btw?) ist das Rechteck, das die Ellipse umgibt ("Bounding-Rect"):
Delphi-Quellcode:
Das umgebende Rechteck bekommst du sozusagen, wenn du vom Mittelpunkt aus in alle vier Himmelsrichtungen Distance/Radius weit gehst.
// Etwas vereinfacht:
TRect = record Left, Top, Right, Bottom: Integer; end; |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
HiHo Co0kie,
da ich - wie du dir sicherlich schon gedacht hast - das Programm mal in Delphi getippt habe (um zu gucken, ob das auch stimmt, was ich poste) habe ich den Code nun ein wenig verändert:
Delphi-Quellcode:
Die Herangehensweise ist die Selbe, aber evtl. ein wenig einfacher zu verstehen. :thumb:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Var Radius_real :Real; Radius :Integer; begin Radius_real := SQRT( SQR(Center.X - X) + SQR(Center.Y - Y) ); Radius := Trunc(Radius_real); //Nachkommastellen abschneiden //Variante 1 Form1.Canvas.Ellipse(Center.X-Radius, Center.Y-Radius, Center.X+Radius, Center.Y+Radius); //Variante 2 {aRect.Left := Center.X - distance; aRect.Top := Center.Y - distance; aRect.Right := Center.X + distance; aRect.Bottom := Center.Y + distance; Form1.Canvas.Ellipse(aRect); } end; |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Hanselmansel, du bist ein Genie :mrgreen:
Ich hab es endlich hinbekommen :) Jetzt hab ich aber noch ein letztes Problem: Wie lasse ich den Cursor zu einem weißen rechteck werden? |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Hallo hanselmansel,
behaupte doch bitte nicht Dinge die ganz eindeutig falsch sind. Dazu braucht man eben nicht den Pythagoras. Vielleicht liest das jemand, den du dann total verunsicherst. Ausserdem erklärt mein Beitrag die mathematischen Grundlagen zu diesem thread und genau darum geht es. Ich erklär dir das gerne nocheinmal ( privat per mail ). Rainer |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Man könnte es auch so verstehen, dass der X- oder Y-Wert des Cursors den Kreis bestimmt, dafür wäre wirklich kein Pythagoras nötig. Aber für den Benutzer ist diese Möglichkeit IMO sinnlos und verwirrend. |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Schau dir mal form1.cursor an. Du kannst auch eine selbst erstellte Cursordatei verwenden. Wie das geht kannst du bestimmt über die Suche ermitteln:
![]() |
Re: Minipaint - Kreis von Mittelpunkt aufziehen
so, die aufgabe kenn ich auch, aber wie zeichne ich ein exaktes quadrat immer nach der längsten seite?
|
Re: Minipaint - Kreis von Mittelpunkt aufziehen
Zitat:
Zitat:
Sorry, aber ich verstehe kein einziges Wort deines Posts. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz