Thema: Prism Image

Einzelnen Beitrag anzeigen

Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#14

Re: Image

  Alt 28. Apr 2005, 18:38
In deiner Beispielprozedur ist eckpunkte lokal definiert, d.h. die variable wird immer wieder gelöscht.
Du musst die Variable entsprechend im public/privat Abschnitt deklarieren (oder halt ganz global - das mögen hier einige aber nicht )

Edit: Mal ein schneller Test.
Ok, nun gehts
(Nachteil ist noch, dass nach dem Zeichnen eines Dreiecks ein Mausklick "leer" ist und dann erst 3 neue folgen.
Und dass man das Fenster nicht minimieren sollte )


Aber nur zu Testzwecken

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    // Variable für Ecken
    ecke: integer;
    // Variable für Array d. Punkte
    points: array[0..2] of TPoint;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
        points[ecke-1].X := X;
        points[ecke-1].Y := Y;

        Inc(ecke);

        if ecke = 4 then
        begin
                with Form1.PaintBox1 do
                begin
                        Canvas.MoveTo(points[0].X, points[0].Y);
                        Canvas.LineTo(points[1].X, points[1].Y);

                        Canvas.MoveTo(points[1].X, points[1].Y);
                        Canvas.LineTo(points[2].X, points[2].Y);

                        Canvas.MoveTo(points[2].X, points[2].Y);
                        Canvas.LineTo(points[0].X, points[0].Y);
                end;
                ecke := 1;
        end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
        ecke := 1;
end;

end.
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat