Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ohne MoveTo, LineTo ?! (https://www.delphipraxis.net/180423-ohne-moveto-lineto.html)

nisemono 19. Mai 2014 14:33

Ohne MoveTo, LineTo ?!
 
Hallo :)

und zwar hab ich ein Problem mit Delphi
Ich habe als Aufgabe bekommen eine Linie zu zeichnen ohne MoveTo oder LineTo zu verwenden, habe aber wirklich keine Ahnung welchen Befehl man dafür benutzen könnte. Wisst ihr das zufällig?

Und ich entschuldige mich, falls ich mich im falschen Thema befinde, aber ich bin noch sehr neu in solchen Foren. :)

Bummi 19. Mai 2014 14:47

AW: Ohne MoveTo, LineTo ?!
 
Vielleicht suchst Du so etwas Linie aus einzelnen Pixeln zeichnen

DeddyH 19. Mai 2014 14:49

AW: Ohne MoveTo, LineTo ?!
 
Man könnte das Verhältnis von X- und Y-Abstand zwischen Start- und Endpunkt ermitteln, eine der beiden Achsen ablaufen (Schleife) und das Pixel an der zu errechnenden Position einfärben, aber ob das das Ziel der Aufgabe ist, vermag ich nicht zu sagen.

Uwe Raabe 19. Mai 2014 15:15

AW: Ohne MoveTo, LineTo ?!
 
Der kreative Kopf würde jetzt vielleicht Polyline nehmen :-D

Bummi 19. Mai 2014 15:55

AW: Ohne MoveTo, LineTo ?!
 
@UweRaabe ob das im Sinne des Aufgabenstellers ist? :-D

mkinzler 19. Mai 2014 15:57

AW: Ohne MoveTo, LineTo ?!
 
Zitat:

Zitat von Bummi (Beitrag 1259402)
@UweRaabe ob das im Sinne des Aufgabenstellers ist? :-D

Die Lösung über ein Forum sicherlich auch nicht ;)

Popov 19. Mai 2014 16:36

AW: Ohne MoveTo, LineTo ?!
 
Zitat:

Zitat von Bummi (Beitrag 1259402)
@UweRaabe ob das im Sinne des Aufgabenstellers ist? :-D

Statt MoveTo könnte man auch PenPos nehmen:
Delphi-Quellcode:
  Canvas.PenPos := Point(1, 1);
  Canvas.LineTo(10, 10);
Damit wäre schon zumindest die halbe Aufgabe ohne Mühe gelöst ;)

bernau 19. Mai 2014 17:01

AW: Ohne MoveTo, LineTo ?!
 
Zitat:

Zitat von mkinzler (Beitrag 1259404)
Zitat:

Zitat von Bummi (Beitrag 1259402)
@UweRaabe ob das im Sinne des Aufgabenstellers ist? :-D

Die Lösung über ein Forum sicherlich auch nicht ;)

Er macht sich aber gedanken darüber, woher er die Lösung bekommt. Dann ist es egal, ob über Forum, DocWiki oder sonstwo her.

Aphton 19. Mai 2014 17:12

AW: Ohne MoveTo, LineTo ?!
 
Aus der Formulierung vom TE vermute ich, dass es sich um einen Schüler handelt und weiters die Aufgabenstellung die ist, dass man eine Linie zu zwei gegebenen Punkten A & B zeichnen soll (daher die Restriktion kein MoveTo / LineTo - sonst würde das ja keinen Sinn machen)

Wenn das nun der Fall ist, dann könntest du ja mal das hier durchlesen.

Damit du überhaupt daran arbeiten kannst, bräuchtest du ein Offscreen Bitmap, mit welcher du über Pixels[x,y] auf die einzelnen Pixeln zugreifen kannst, was mit Canvas so nicht geht.
Du müsstest bei jedem Neuzeichnen das Bild natürlich auf die Zeichenfläche drüberklatschen.

Edit: Ich hätte vlt vorher die Antworten lesen sollen xD

Uwe Raabe 19. Mai 2014 18:04

AW: Ohne MoveTo, LineTo ?!
 
Zitat:

Zitat von Bummi (Beitrag 1259402)
@UweRaabe ob das im Sinne des Aufgabenstellers ist? :-D

Dann soll sich der Aufgabensteller doch bitte präzise ausdrücken, sonst kommt sowas dabei raus.

Popov 19. Mai 2014 18:28

AW: Ohne MoveTo, LineTo ?!
 
Man könnte statt der Linie auch einen Kreis zeichnen, bzw. ein Kreisausschnitt. Dan benutzt man diese Formel:
Code:
        Länge des Kreisbogens
alpha = ---------------------
              Radius
Wählt man den Radius unendlich groß, wird auch der Kreis sehr groß. So groß, dass man keine Krümmung auf dem Monitor sehen kann. Es wäre theoretisch zwar eine gekrümmte Linie, aber man würde es aufgrund des gewaltigen Radius nicht sehen.

Der Rest ist einfach - zuerst alpha berechnen, dann den Mittelpunkt des Kreises ermitteln, zuletzt den Kreisausschnitt zeichnen :-D

EarlyBird 19. Mai 2014 20:19

AW: Ohne MoveTo, LineTo ?!
 
einfache Linie:
Delphi-Quellcode:
Form1.Canvas.Rectangle(10,10,450,11);
die Anfangs- und Endpunkte sind ja nicht vorgegeben 8-)

DeddyH 20. Mai 2014 07:09

AW: Ohne MoveTo, LineTo ?!
 
An Rectangle hatte ich auch erst gedacht, aber Diagonalen dürften damit schwierig umzusetzen sein ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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