Autor Beitrag
Peter Wolf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Di 22.11.05 16:30 
Hallo Leute,

für Euch wahrscheinlich eine simple Frage, für mich ist es schon schwieriger, da ich mich jetzt erst mit Canvas beschäftige.

Folgendes Problem:
Ich zeichne mit "Form1.Canvas.LineTo(x,y);" auf meiner Form eine Linie. Minimiere und stelle ich das Fenster wieder her, ist die gezeichnete Linie weg.
Ich denke mal, dass ich das irgendwie abspeichern muss, nur wie?

Vielen Dank!
Grüße Peter
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Di 22.11.05 16:57 
Ne das musst du nicht abspeichern. Der Grund warum das weg ist ist der, dass du zum Beispiel aus einem ButtonOnClick gezeichnet hast. Wenn du das Fenster Minimierst und wiederherstellst, dann wird das neu gezeichnet. Da werden die Linien aber nicht mit gezeichnet. Und schwupp sind sie weg.

Du muss deine Linien aus der Event Form.OnPaint zeichnen. Dann klappts.

PS: Gleiches passiert auch, wenn du ein andere Fenster über deines hinweg ziehst oder die Größe änderst.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 22.11.05 18:38 
Du kannst aber auch ein TBitmap nehmen und alles was du zeichnest gleichzeitig ins Bitmap zeichnen.
Bie OnPaint dann einfach das Bitmap neu zeichnen lassen. Ein Tutorial dazu hat Lucky. Such einfach
mal hier im Delphi-Forum, wirste irgendwo finden.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 10:14 
Hallo und danke für die Antworten.

@[quote]Lossy:
Irgendwie funktioniert es bei mir trotzdem nicht. Hier mal der Code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  MyFirstPoint, MyLastPoint: TPoint;
begin
  if Shift = [ssShift,ssLeft] then begin
    MyX:= x;
    MyY:= y;
    FormPaint(self);
  end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Form1.Canvas.LineTo(MyX,MyY);
end;


Was habe ich da falsch verstanden, weil es nicht funzt?

@GTA-Place
Also ich finde von Lucky kein entsprechendes Tut mit TBitMap, auch nicht auf seiner HP.

Grüße Peter
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mi 23.11.05 10:59 
Du hat vergessen den Startpunkt deiner Linie festzulegen. Wenn du eine Linie zeichnen möchtest musst du immer zu erst ein MoveTo machen und anschließend ein LineTo. Das MoveTo ist lediglich dann nicht nötig, wenn es genau an dem Ende deiner zuvor gezeichneten LineTo beginnen soll. Bei einem LineTo wird die Aktuelle Position immer auf den Übergebenen Punkt gesetzt.

Also in etwa so.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
with Form1.Canvas do begin
  Color := clMaroon;  // Farbe setzen
  MoveTo(1010);     // Startpunkt
  LineTo(MyX,MyY);    // Erste Linie
  LineTo(20010);    // Zweite Line
  LineTo(1010);     // wieder zurück zum Anfang
end;

Damit würde ein Dreieck gezeichnet werden. Und zwar wäre der untere Punkt der den ausgewählt hattest. Es empfielt sich bei so etwas immer auch noch die Farbe deines Zeichenwerkzeuges (Pen) zu setzen. Da ist man dann immer auf dem sicheren Pfad.

Noch etwas. Du rufst in deinem Code direkt die Methode FormPaint aus. Das solltest du nicht tun, da du sonst lediglich über das bestehende Bild mals. Und wenn dann auf einmal das Fenster neu gezeichnet werden muss, dann sind die anderen Linien auf einmal weg. Es ist besser wenn du Form.Repaint aufrufst, damit wird dann auch das Fenster neu gezeichnet und der alte Kram verschwindet.

Das was GTA meinte ist nicht unbedingt immer notwendig. Aber immer dann wenn du vor hast mehr zu zeichnen. Was in recht vielen Fällen der Fall sein dürfte. Mit der Zeit bekommt man ein wenig ein gespürr dafür, wann man es so machen muss und wann nicht. Es wird dabei ja auch reichlich Speicher verbraten und mitunter kann es auch geringfügig länger dauern.

Bei der Methode wird ein TBitmap erstellt. In dieses wird dann immer hineingezeichnet und sobald das Fenster gemalt werden soll wird nur noch das TBitmap gezeichnet. Der Grund warum man das so macht ist folgender. Jede Operation auf einem Canvas wird sofort durchgeführt und wenn du glück hast und sich der Monitor in der Zwischenzeit updated dann siehst du ein halbfertiges Bild. Das äußerst sich dann in einem Flimmer und sieht bescheiden aus. Wenn du jetzt aber zu erst in ein Bitmap zeichnest, dann wird so lange gewartet bis alles so weit ist. Und dann wird auf einmal das neue Bild gezeichnet.

Du könntest es so vor allem auch so optimieren, dass das Bitmap nur dann neu gezeichnet wird sich auch tatsächlich etwas getan hat. Zum Zeichnen benutzt du es ständig. Nur sparrst du dir das ständige von grund auf neuzeichnen des Bildes.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
battledevil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 96

WinXP, Win7
C#, C++, VBNET
BeitragVerfasst: Mi 23.11.05 11:01 
user profile iconPeter Wolf hat folgendes geschrieben:

Was habe ich da falsch verstanden, weil es nicht funzt?


Nix, denn es funktioniert. Allerdings nur, wenn Du die linke Shifttaste gedrückt hälst, wenn du in die Form klickst.
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 11:26 
Hallo nochmal.

Sorry, habe mich ein bisschen undeutlich ausgedrückt. Das Zeichnen funktioniert schon (natürlich mit Shift), aber beim Minimieren und Wiederherstellen, sind die Linen wieder weg.

Ich werde Lossys letzten Beitrag nochmal durcharbeiten.

Grüße Peter
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 11:29 
Hab noch was vergessen:

Lossy hat zuletzt geschrieben:
"Du rufst in deinem Code direkt die Methode FormPaint aus. Das solltest du nicht tun", aber im ersten Beitrag steht "Du muss deine Linien aus der Event Form.OnPaint zeichnen. Dann klappts". Da bin ich jetzt ein wenig irretiert.

Grüße Peter
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mi 23.11.05 11:37 
Also das Event OnPaint wird selbstständig vom Fenster aufgerufen. Wenn du jetzt die Methode FormOnPaint von hand aufrufst, dann wird einfach nur noch einmal der darinstehende Code ausgeführt. Aber das ist ja nicht alles was bei einem OnPaint passiert. Wenn du Form.Repaint aufrufst, dann bekommt das Fenster gesagt es solle sich neu zeichnen. Es wird also nicht nur etwas hinzugefügt sondern das "alter" erst einmal gelöscht und dann komplett neu gezeichnet.

[edit] Warum dein obiger Code nach dem Wiederherstellen nicht funktioniert ist mir ehrlich gesagt ein Rätsel. Dann bei mir hat so etwas bisher immer funktioniert. Evtl solltest du mal mehr Code zeigen. Oder mache dir testweise mal eine neue leere Anwendung in der Fix nur etwas in OnPaint zeichnest und schaue ob es dort klappt.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
battledevil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 96

WinXP, Win7
C#, C++, VBNET
BeitragVerfasst: Mi 23.11.05 11:56 
Wenn Du die Linien beim minimieren oder verschieben nicht verlieren willst, ist die einfachste Methode, anstatt direkt auf die Form zu zeichnen, die Linien in ein Image zu zeichnen.
Ein etwas aufwendigerer Weg wäre es, Bitmaps zu verwenden, geht aber genausogut.
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 12:13 
Hallo zusammen,

das mit dem TImage werde ich mal testen.
Also, ich habe das Beispiel von Lossy genommen und hier tritt das selbe Problem auf und aussserdem ist noch
ein zusätzliches Phänomen aufgetreten.
Ich habe das mal mit WINK erstellt, als SWF und EXE (falls jemand Shockwave nicht betrachten kann). Denn
Visuell kann man mein Problem besser verstehen, bzw. ich kann es nicht so toll schildern.

Grüße Peter
Einloggen, um Attachments anzusehen!
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mi 23.11.05 12:30 
TImage: Das mit dem TImage ist genau das Selbe wie mit einem TBitmap nur mit dem Unterschied, dass das TImage dadurch schon flackern kann, da es sich um eine eigene Komponente handelt. Aber dafür kann man ja Doublebuffering aktivieren die wiederum ein Bild erstellt und das Bild des TImages buffert und mal eben unnötig viel Speicher und Geschwindigkeit frisst. Und das nur weil man sich 5 Zeilen Code sparen will!

Der Weg über ein TBitmap ist zwar geringfügig mehr schreibarbeit aber das sollte resourcenbewussten Programmiern definitiv nicht zu viel sein. Ich persönlich benutze ein TImage lediglich dann wenn ich irgendwo eine kleine Logodatei habe. Und ich benutze äußerst selten Logos. Für alles andere (Zeichenoperationen etc) halte ich das Image für ungeeignet.

Peter: Das finde ich doch sehr seltsam. Was genau machst du in dem neuen Code? Ist das alles fest eincodiert? Wenn ja habe ich echt keine Ahnung was da los ist. So etwas habe ich bisher auch noch nicht erlebt. :shock:

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
battledevil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 96

WinXP, Win7
C#, C++, VBNET
BeitragVerfasst: Mi 23.11.05 12:46 
user profile iconLossy eX hat folgendes geschrieben:
...dass das TImage dadurch schon flackern kann, da es sich um eine eigene Komponente handelt...

Stimmt, das Image kann flackern, wenn man viele Sachen über einen Timer oder eine Schleife reinzeichnet. Aber ich weiß nicht, ob das hier der Fall ist.
Trotz aller TImage-Vorurteile hier ein Code, der zumindest bei mir funktioniert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var MyX,MyY:Integer;
begin
    if Shift = [ssShift,ssLeft] then
    begin
        MyX:= x;
        MyY:= y;

        with Image1.Canvas do
        begin
            Pen.Color:=clWhite;                         // Stiftfarbe weiss
            Brush.Color:=ClWhite;                       // Füllfarbe weiss
            Rectangle(0,0,Image1.Width,Image1.Height);  // Image weiß machen
            Pen.Color:=clBlack;                         // Stiftfarbe schwarz
            MoveTo(1010);     // Startpunkt
            LineTo(MyX,MyY);    // Erste Linie
            LineTo(20010);    // Zweite Line
            LineTo(1010);     // wieder zurück zum Anfang
        end;
    end;
end;

Minimieren geht problemlos, das Dreieck bleibt erhalten.
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 12:50 
Hallo Lossy,

hier noch der 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:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
//    procedure DrawLine(APoint1, APoint2: TPoint; ACanvas: TCanvas);
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
{  BeginX, BeginY, EndX, EndY: Integer;
  MyX, MyY: Integer;}


implementation

{$R *.dfm}
{procedure TForm1.DrawLine(APoint1, APoint2: TPoint; ACanvas: TCanvas);
var
  Lpixel, LMaxAxisLength: integer;
  LRatio: Real;
begin
  LMaxAxisLength := Max(abs(APoint1.X - APoint2.X), abs(APoint1.Y - APoint2.Y));
  for Lpixel := 0 to LMaxAxisLength do
  begin
    LRatio := Lpixel / LMaxAxisLength;
    ACanvas.Pixels[APoint1.X + Round((APoint2.X - APoint1.X) * LRatio),
      APoint1.Y + Round((APoint2.Y - APoint1.Y) * LRatio)] :=
      ACanvas.Pen.Color;
  end;
end;}


procedure TForm1.Button1Click(Sender: TObject);
begin
  with Form1.Canvas do begin
    MoveTo(1010);     // Startpunkt
    LineTo(10,200);    // Erste Linie
    LineTo(20010);    // Zweite Line
    LineTo(1010);     // wieder zurück zum Anfang
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Form1.Repaint;
end;

end.


Grüße Peter
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 12:59 
Hallo BattleDevil,

danke, mit dem TImage funktioniert das, ohne dass wieder etwas verschwindet. Da ich sowieso nur etwa 20 gerade Linien zeichnen will, ist das für mich ausreichend, ohne auf die Resourcen oder Geschwindigkeit schauen zu müssen.

Grüße Peter
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mi 23.11.05 13:19 
user profile iconbattledevil hat folgendes geschrieben:
Trotz aller TImage-Vorurteile ...

Glaube mir. Ich entwickel seit 5 Jahren die unterschiedlichsten grafischen Komponenten, Bibliotheken etc. Und so ein bisschen weiß ich wovon ich rede. ;-) Nichts desto trotz finde ich gerade bei so ein paar Linien sollte man nicht zu einem TImage greifen. Aber das ich manchmal idealistische Weltvorstellungen habe ist mir öfters schon mal aufgefallen. Zum Beispiel jeden Morgen, wenn ich davon ausgehe, dass Leute die einen Führerschein besitzen auch tatsächlich Autofahren können. :evil: Aber ich glaube ich schweife an...

Peter: Ist klar warum das nicht geht. Wenn du das Zeichnen anstelle im Button1Click in FormOnPaint erledigen würdest, dann würde das auch aufgerufen werden, wenn das Formular gezeichnet werden würde! Und nicht nur dann wenn du einen Button drückst.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
battledevil
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 96

WinXP, Win7
C#, C++, VBNET
BeitragVerfasst: Mi 23.11.05 13:27 
user profile iconLossy eX hat folgendes geschrieben:
user profile iconbattledevil hat folgendes geschrieben:
Trotz aller TImage-Vorurteile ...

Glaube mir. Ich entwickel seit 5 Jahren die unterschiedlichsten grafischen Komponenten, Bibliotheken etc. Und so ein bisschen weiß ich wovon ich rede. ;-) Nichts desto trotz finde ich gerade bei so ein paar Linien sollte man nicht zu einem TImage greifen. Aber das ich manchmal idealistische Weltvorstellungen habe ist mir öfters schon mal aufgefallen. Zum Beispiel jeden Morgen, wenn ich davon ausgehe, dass Leute die einen Führerschein besitzen auch tatsächlich Autofahren können.


Tut mir leid, falls ich dich durch meine naive Herangehensweise beleidigt haben sollte. Es geht mir einfach darum, dass ich ungern Neulinge in der Grafikprogrammierung mit TBitmaps und deren Möglichkeiten erschlagen will. Dann lieber eine einfache Lösung, die einfachen Ansprüchen gerecht wird.
Ich weiß genau, was du meinst, ich programmiere auch schon ein paar Jahre mit Delphi und benutze für gewöhnlich TBitmaps, wenn ich was mit 2D Grafik mache. Das ist nunmal die beste Möglichkeit, aber für Einsteiger sicher nicht die bequemste.

Leute, die einen Führerschein besitzen, können eventuell nur Moped fahren und kein Auto :wink:
Peter Wolf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

WinXP Pro
Delphi7 Ent.
BeitragVerfasst: Mi 23.11.05 13:44 
Hallo Lossy,

also irgendwie raffe ich das nicht.
Wenn ich es wie folgt mache geht es aber auch nicht, Linien sind nach Minimieren und Wiederherstellen weg.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  if Shift = [ssShift,ssLeft] then begin
    MyX:= x;
    MyY:= y;
    Form1.Paint;
  end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
    Form1.Canvas.LineTo(MyX,MyY);
end;



Könntest Du mir bitte irgendein Beispiel posten, wie man es richtig macht, so wie Du es meinst?. Habe aus der Hilfe keine Lösungsansätze finden können.

Grüße Peter
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mi 23.11.05 14:09 
Peter: Wie ich oben auch geschrieben hatte funktioniert das nicht, da du das MoveTo vergessen hattest. Deswegen wird es nur einmal Gezeichnet. Die interne Position ist zu begin 0,0. Durch ein LineTo(100, 100) wird die Interne Position auf 100,100 gesetzt. Wenn du jetzt eine Linie von Intern 100,100 nach 100,100 zeichnen möchtest wird diese natürlich nicht gezeichnet. Deswegen musst du zu begin die Position Immer wieder auf einen Anfangspunkt setzen.

Folgender Code funktionkiert.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.MoveTo(1010);
  Canvas.LineTo(100100);
  Canvas.LineTo(10190);
  Canvas.LineTo(1010);
end;


battledevil: Hast mich nicht beleidig. Man sieht nun mal nicht was das gegenüber alles kann und da passiert es recht schnell, dass man jemanden unterschätz oder unterschätzt wird.

Das man Anfänger nicht überfordern sollte sehe ich durchaus auch ein. Aber ich finde es verwerflich Dinge zu empfehlen die ich selber nie einsetzen würde. Außer ich sehe keine Alternative mehr. Aber im Fall TImage sehe ich immer eine Alternative. ;-) Ich finde solche Möglichkeiten sollte man sich gar nicht erst angewöhnen. Dann lieber ein wenig die Schwierigkeit anheben. Wobei ich ja von anfang an versucht war es komplett ohne zu lösen. Habe TBitmap nur eingebracht um dem TImage den Wind aus den Segeln zu nehmen. ;-)

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mi 23.11.05 14:09 
Das liegt daran, das z.Bsp. Lineto(100,100) immer von PenPos zu dem Punkt 100,100 eine Linie zieht und anschließend PenPos auf diesen Punkt setzt. Beim ersten Aufruf ist PenPos 0,0; d,h, es wird eine Linie von 0,0 zur Mausposition (myX,MyY) gezogen. Anschließend wird ausserhalb des Canvas geklickt (minimieren, maximieren). dann wird Paint wieder aufgerufen (PenPos ist immer noch 100,100) und eine Linie von 100,100 nach 100,100 gezeichnet.
Du siehst schon, dass das nicht so funktionieren kann.

So könnte es z.Bsp. klappen :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.FormPaint(Sender: TObject);
begin
  Form1.Canvas.MoveTo(10,10);
  Form1.Canvas.LineTo(100,100);
end;



EDIT : OH, da war ich wohl zu langsam !

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.