| Autor |
Beitrag |
Unknown
      
Beiträge: 184
Win XP
Delphi 7
|
Verfasst: Sa 28.10.06 15:21
Hi LeUtZ,
ich wollt wissen ob das geht:
-Ich hab ne linie(5 cm)
-Ein Ende der Linie ist "fest"
-Das andere ende soll in die Richtung der maus zeigen
-Det wars!!!!!!!!! 
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 28.10.06 15:29
|
|
Unknown 
      
Beiträge: 184
Win XP
Delphi 7
|
Verfasst: Sa 28.10.06 15:39
wird die linie dann von aleine gezeichnet oder wie
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Sa 28.10.06 15:40
probieren geht über studieren 
|
|
Unknown 
      
Beiträge: 184
Win XP
Delphi 7
|
Verfasst: So 29.10.06 15:09
könntest du mir das erklären(Zeile für Zeile)
|
|
Marc.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: So 29.10.06 15:44
Delphi-Quelltext 1: 2: 3:
| form1.Repaint; form1.Canvas.LineTo(Form1.Width div 2, Form1.Height div 2); Form1.Canvas.MoveTo(x,y); |
1. löcht alle zuvor gezeichneten linien ("neuzeichnen")
2. setzt den startpunkt, der zu zeichnenden linie, fest - in dem fall Form-Mitte
3. zeichnet vom startpunkt aus eine linie zum punkt x,y 
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: So 29.10.06 16:50
Hier hilft die Vektorrechnung
Du baust dir den Vektor vom Fixpunkt zum Punkt der Maus.
P(5;  sei z.B. der Fixpunkt
Der Punkt der Maus sei M(x;y)
Dann ist der Vektor von P nach M: M-P also (x-5;y-  .
Dann normierst du den Vektor, in dem du durch seinen Betrag teilst.
Betrag eines Vektors ist d=sqrt(x^2+y^2)
Und dann hat der Vektor die Länge eins.
Dann noch mal die Länge des Vektors, wie lang er sein soll, dann haste den Vektor, der von P in RIchtung M zeigt mit der Länge , mit der du Multipliziert hast.
|
|
Danny87
      
Beiträge: 688
Windows 10 Pro 64bit
Sprachen: HTML, PHP, JavaScript, Delphi || IDE: RAD Studio 10.1 Berlin Starter, WeBuilder
|
Verfasst: So 29.10.06 16:54
@Kroni: Ich glaube nicht, dass er in seinem Alter was mit Vektorenrechnung anfangen kann 
|
|
Kroni
      
Beiträge: 720
Win 98, Win ME, Win2k, Win XP
D3 Pro
|
Verfasst: So 29.10.06 16:59
Danny87 hat folgendes geschrieben: | @Kroni: Ich glaube nicht, dass er in seinem Alter was mit Vektorenrechnung anfangen kann  |
gut
a) ich habe nicht auf sein Alter geachtet
b) naja, er muss ja theoretisch nur die Rechnungen dort befolgen, aber gut, stimmt schon, könnte für ihn etwas kompliziert sein....aber habe angenommen, dass er jünger sei.
|
|
Unknown 
      
Beiträge: 184
Win XP
Delphi 7
|
Verfasst: Mo 30.10.06 15:09
ihr habt meine Frage falsch verstanden,
ich wollte eine Linie mit 5cm und nicht länger oder kürzer.
Das heißt:
-Sie soll genau 5cm betragen
-Und der "Nicht-feste" Punkt soll in Richrung Maus zeigen
Richtig, VektorenRechnung bin ich nen bissel jung 
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mo 30.10.06 15:45
Ich hab das von oben mal in Quelltext umgewandelt. Das Problem ist dabei die 5cm, da das ja vom Bildschirm und der Auflösung abhängt. Das wird man nicht so ohne weiteres "mal eben" hinbekommen. Eine konstant lange Linie in Richtung des Mauszeigers bekommt man so:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var xcenter, ycenter: Integer; DeltaX, DeltaY: Integer; Hypothenuse: Double; Streckfaktor: Double; begin form1.Repaint;
xCenter := Form1.Width div 2; yCenter := Form1.Height div 2;
form1.Canvas.MoveTo(xCenter,yCenter); DeltaX := X - xCenter; DeltaY := Y - yCenter;
Hypothenuse := sqrt(DeltaX*DeltaX + DeltaY*DeltaY);
if Hypothenuse <> 0 then Streckfaktor := 100 / Hypothenuse else Streckfaktor := 0;
Form1.Canvas.LineTo( Round(xCenter + Streckfaktor * DeltaX), Round(yCenter + StreckFaktor * DeltaY)); end; |
_________________ We are, we were and will not be.
|
|