Autor Beitrag
zwerg17
Hält's aus hier
Beiträge: 1

Debian

BeitragVerfasst: Sa 16.09.06 09:32 
Hallo,
ich bin neu hier, und ich hoffe ich Poste in das richtige Forum ;)

Also, ich bin gerade am Anfang von Delphi und arbeite noch mit mSuM...
Mein erstes "Programm" sollte ein Malprogramm sein, zumindest versuche is sowas. Nun möchte ich eine gerade Linie zeichnen:
1. Klick bestimmt die Anfangsposition, der 2. Klick das Ende. Zwischen diesen beiden Punkten soll nun eine Linie gezeichnet werden.
Ich kenne im Mom erst die while- und repeat Schleifen, sowie die if-Abfrage.

Achja, ich möchte keinen Code sondern nur einen Ansatz, da ich echt nicht weiterkomme...

Danke für jede Hilfe!
Gruß,
zwerg17
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Sa 16.09.06 09:45 
Hallo

wenn du Ansätze haben willst, schau dir Canvas.moveto und canvas.lineto an. Die klicks ins mouseup/down-Ereignis.

Im Demo-Ordner liegt unter demos/doc/grapex ein "paint"-Demo, wo alles schon drin ist. Schau es dir genau an und versuche es zu verstehen und für dich umzusetzen.

MfgFrank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Jakob Schöttl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 929
Erhaltene Danke: 1


Delphi 7 Professional
BeitragVerfasst: Sa 16.09.06 09:47 
Das geht ganz einfach, ohne repeat, oder if oder so, sondern mit einer fertigen prozedur, nähmlich:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
//wenn du direkt auf das Form die Linie zeichnen möchtest:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
//Jedes Object hat eine Zeichenfläche "Canvas" also gehts genauso mit Image1.Canvas
//Canvas ist die zeichenfläche, brauchst sie bloß selten.
  Form1.Canvas.MoveTo(x_anfang,y_anfang); //Hier bewegst du den Curser auf die Anfangsposition, die du OnMouseDown in einer globalen Variable gespeichert hast.
  Form1.Canvas.LineTo(x,y); //hier lässt du vom Zeichen-curser eine Line zum Endpunkt, dort wo du die Maustaste loslässt, zeichnen.
end;


Edit1: Jetzt war user profile iconkeldorn schneller