Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeichnen (https://www.delphipraxis.net/130271-zeichnen.html)

delphi-projekt 5. Mär 2009 20:20


Zeichnen
 
Hallo,

wie funktioniert das, wenn ich eine Strecke von Delphi zeichnen lassen möchte.
Also, das heißt folgendes:

Ich drücke die Taste "W" und Delphi soll eine Linie nach oben zeichnen, drücke
ich die Taste "A" soll es die Linie vom letzten Punkt bei W nach Links zeichnen.

Was benötige ich nun also alles? Bzw. Hat jemand einen Quelltext?

himitsu 5. Mär 2009 20:23

Re: Zeichnen
 
du brauchst eine/mehrere Variable(n) um die Position zu speichern

und dann zeichnest du einfach von dieser Position aus und
speicherst die neue Position.

delphi-projekt 5. Mär 2009 20:27

Re: Zeichnen
 
Ähm, ja,

und wie geht das :gruebel: ?
Ich habe was das angeht echt keinen Plan, ich habe noch nie etwas
mit zeichnen gemacht.

himitsu 5. Mär 2009 20:31

Re: Zeichnen
 
üder das Delphi-Referenz durchsuchenCanvas der Komponente worauf zu zeichnen willst
und dann darin z.B. Delphi-Referenz durchsuchenCanvas.MoveTo und Delphi-Referenz durchsuchenCanvas.LineTo

delphi-projekt 5. Mär 2009 20:38

Re: Zeichnen
 
Ich finde einfach nichts dazu,
soll ich außerdem ein TImage nehmen? oder was sonst?

himitsu 5. Mär 2009 20:40

Re: Zeichnen
 
du kannst direkt auf die Form zeichnen (Form1.Canvas)
oder TPaintBox, oder TImage ... im Notfall ginge auch ein TPanel ... sehr viele Komponenten bieten ein Canvas an.

oder such einfach mal nach Hier im Forum suchenCanvas MoveTo


[add]
ok, ich dachte TPanel hätte ein TCanvas :oops:

Namenloser 5. Mär 2009 22:09

Re: Zeichnen
 
Zitat:

Zitat von himitsu
im Notfall ginge auch ein TPanel ... sehr viele Komponenten bieten ein Canvas an.

An das Canvas eines TPanel kommt man aber nur über die WinAPI!

Am besten ist IMO die TPaintbox, da diese speziell für diesen Zweck gedacht ist. Allerdings muss beachtet werden, dass Zeichnungen verschwinden, sobald man mit einem anderen Fenster darüber fährt. Um das zu verhindern muss das Bild im OnPaint-Ereignis dann jedes mal neu gezeichnet werden. Beim TImage muss man sich darum nicht kümmern, weil alle Zeichenvorgänge auf das Bitmap im Speicher (Image.Picture.Bitmap) übertragen werden, und automatisch wieder auf das canvas kopiert werden, wenn teile neu gezeichnet werden müssen.

mkinzler 5. Mär 2009 22:19

Re: Zeichnen
 
Zitat:

Allerdings muss beachtet werden, dass Zeichnungen verschwinden, sobald man mit einem anderen Fenster darüber fährt. Um das zu verhindern muss das Bild im OnPaint-Ereignis dann jedes mal neu gezeichnet werden.
Und das gilt für jeden Canvas

delphi-projekt 6. Mär 2009 20:04

Re: Zeichnen
 
Danke für die Infos,

jetzt ist folgendes Problem aufgetreten:

Ich möchte mit Hilfe der Tastatur zeichnen. Das soll wie folgt aussehen. Z.B.
so lange wie ich die Taste "A" gedrückt halte, soll er mir einen Strich malen z.B. nach rechts.
und wenn ich die Taste "W" gedrückt halte, soll er mir einen strich nach oben malen.

Leider habe ich keine Ahnung wie ich das machen soll?

Bitte helft mir nochmal

Noedel 6. Mär 2009 20:32

Re: Zeichnen
 
mit nem Timer liest du aus, ob eine Taste gedrückt ist (--> getansikeystate), dann malst du mit lineto eine Linie in die gewünschte Richtung.
also sähe dann im pseudocode so aus
Delphi-Quellcode:
Anweisung Zeichnen(Zeichen:Char; JetztX,JetztY:Integer)
Variable
  LinieVertikal, LinieHorizontal: byte;
beginne
  Wenn zeichen='W' dann
    Beginne
      LinieHorizontal:=0;
      LinieVertikal:=-5;
    Ende
  Wenn zeichen='S' dann
    Beginne
      LinieHorizontal:=0;
      LinieVertikal:=5;
    Ende
  Wenn zeichen='A' dann
    Beginne
      LinieHorizontal:=-5;
      LinieVertikal:=0;
    Ende
  Wenn zeichen='D' dann
    Beginne
      LinieHorizontal:=5;
      LinieVertikal:=0;
    Ende
  Bild.Zeichenfläche.LinieZu(JetztX+LinieHorizontal,JetztY+LinieVertikal)
  Ende


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 Uhr.
Seite 1 von 3  1 23      

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