Autor Beitrag
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Do 22.05.03 15:43 
Hi,
gegen ist ein Punkt X (100,100), ein Winkel A (45°) und eine Scheitellänge L (50 Pixel). Wie kann ich das auf ein TCanvas zeichen?

Schon mal Danke,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Do 22.05.03 20:25 
Du berechnest halt den neuen Punkt:
ausblenden Quelltext
1:
2:
Xneu := X + Round(Sin(Winkel * Pi / 180) * Laenge);
Yneu := Y + Round(Cos(Winkel * Pi / 180) * Laenge);

so müsste es klappen. Dann zeichnen mit:
ausblenden Quelltext
1:
2:
Canvas.MoveTo(X, Y);
Canvas.LineTo(Xneu, Yneu);

_________________
Life is a bad adventure, but the graphic is really good!
maxk Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Fr 23.05.03 05:57 
Danke, es funktioniert!

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
scwd
Hält's aus hier
Beiträge: 5

Win XP
D7
BeitragVerfasst: Mi 12.05.04 14:20 
Hallo,

ich bin neu hier, und auch ziemlich neu mit Delphi am Gang...

Ich hab nahezu die gleiche Aufgabe wie oben genannt im Informatik Unterricht bekommen. Leider kommt bei mir, wenn ich den Quellcode von Andreas nehme, nur müll raus. Ich kann die Werte ändern, aber die Linie bleibt gleich..?

Was mach ich falsch? Hier mal mein Code:

ausblenden volle Höhe Delphi-Quelltext
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:
35:
36:
37:
38:
39:
40:
41:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
      private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Xneu, Yneu, X, Y, Winkel, Laenge : Integer;

begin

Winkel := 30;
Laenge := 40;

Xneu := X + Round(Sin(Winkel * Pi / 180) * Laenge);
Yneu := Y + Round(Cos(Winkel * Pi / 180) * Laenge);

Canvas.MoveTo(100,100);
Canvas.LineTo(Xneu, Yneu);
end;

end.


Für Tipps wäre ich dankbar! Und wie gesagt... ich bin blutiger Delphi Anfänger sozusagen!

_________________
es ist schwer zu versteh'n, doch es trifft immer den, der am wenigsten schuld hat am ganzen gescheh'n
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mi 12.05.04 15:24 
Hallo,

erstmal hast du X und Y nicht initialisiert (weise einfach beiden den wert 100 zu) und dann fängst du an der falschen Position mmit zeichnen an - nicht "100, 100" sondern "X, Y". Dein "Müll" ist wohl damit zu erklären dass X und Y nicht initialisiert sind.

_________________
Life is a bad adventure, but the graphic is really good!
scwd
Hält's aus hier
Beiträge: 5

Win XP
D7
BeitragVerfasst: Mi 12.05.04 15:36 
cool! danke, klappt!


für alle anderen: einfach das hier hinzufügen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
X := 100;
Y := 100;
Winkel := 30;
Laenge := 40;


der Winkel ist nun 30° groß, die Strecke 40 lang.

_________________
es ist schwer zu versteh'n, doch es trifft immer den, der am wenigsten schuld hat am ganzen gescheh'n