Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Minipaint - Kreis von Mittelpunkt aufziehen (https://www.delphipraxis.net/58677-minipaint-kreis-von-mittelpunkt-aufziehen.html)

hanselmansel 13. Dez 2005 16:01

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 Delphi-Referenz durchsuchenSQR und Delphi-Referenz durchsuchenSQRT an. Für keine von beiden brauchst du die math.pas...

MfG,

hanselmansel

co0kie 13. Dez 2005 19:25

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.

Khabarakh 13. Dez 2005 19:35

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:
// Etwas vereinfacht:
TRect = record
  Left, Top, Right, Bottom: Integer;
end;
Das umgebende Rechteck bekommst du sozusagen, wenn du vom Mittelpunkt aus in alle vier Himmelsrichtungen Distance/Radius weit gehst.

hanselmansel 13. Dez 2005 19:37

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:
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;
Die Herangehensweise ist die Selbe, aber evtl. ein wenig einfacher zu verstehen. :thumb:

co0kie 13. Dez 2005 23:27

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?

runger 14. Dez 2005 06:06

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

Khabarakh 14. Dez 2005 13:27

Re: Minipaint - Kreis von Mittelpunkt aufziehen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von runger
Hallo hanselmansel,

behaupte doch bitte nicht Dinge die ganz eindeutig falsch sind.
Dazu braucht man eben nicht den Pythagoras.

Dann würde ich gerne deine Lösung für das Problem sehen. Denn dein Codeschnippsel oben erfüllt nicht die von c0okie genannten Bedingungen. Er will, dass der Mittelpunkt des Kreises beim Drücken der Maustaste festgelegt wird und der Punkt beim Loslassen Element des Kreises ist.
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.

ichbins 14. Dez 2005 14:25

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: Hier im Forum suchencursor einbinden

jamma-markus 16. Dez 2005 11:54

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?

Khabarakh 16. Dez 2005 13:04

Re: Minipaint - Kreis von Mittelpunkt aufziehen
 
Zitat:

Zitat von jamma-markus
so, die aufgabe kenn ich auch

Was für eine Aufgabe?
Zitat:

aber wie zeichne ich ein exaktes quadrat immer nach der längsten seite?
Wie meinen :gruebel: ?

Sorry, aber ich verstehe kein einziges Wort deines Posts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 Uhr.
Seite 2 von 4     12 34      

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