Autor Beitrag
Emir88
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 10.02.06 19:15 
Hi leute,

ich hab folgendes vorhaben:ich zeichne mit canvas ein haus was nach jedem click nach rechts und nach oben verschoben werden soll und bei jeder verschiebung kleiner werden soll,sodass es aussieht als hätte man einen fluchtpunkt und das dadurch die perspektivisch richtige häusergröße erscheint!Ich habe es geschafft beim ersten klick ein haus zu zeichnen und beim zweiten nach rechts und nach oben das gleiche haus zu proezieren.
Aber es treten folgende probleme auf:
beim dritten klick passiert nix
das haus wird nicht kleiner
und das haus wir ab da an nicht mehr verschoben,
wobei es immer um die selben einheiten verschobe werden soll.
Hier ist das was ich bis jetzt gesachafft hab:
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, StdCtrls, ExtCtrls;

type
  Tbilderrahmen = class(TForm)
    bild: TImage;
    Zbutton: TButton;
    procedure ZbuttonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure bildClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  bilderrahmen: Tbilderrahmen;
  x : integer ;
  y : integer ;
  z : integer ;

implementation

{$R *.dfm}

procedure Tbilderrahmen.ZbuttonClick(Sender: TObject);
begin
with bild.canvas do
begin
moveto(x,y)        ;
lineto(x+50,y)     ;
lineto(x+50,y-50)  ;
lineto(x,y-50)     ;
lineto(x,y)        ;
lineto(x+50,y-50)  ;
lineto(x+25,y-75)  ;
lineto(x,y-50)     ;
lineto(x+50,y)     ;
x :=+70    ;
y :=+325 ;
end;
end;
procedure Tbilderrahmen.FormCreate(Sender: TObject);
begin
x :=10;
y :=375;
end;

procedure Tbilderrahmen.bildClick(Sender: TObject);
begin

end;

end.

Ich danke euch schonmal im vorraus für eure hilfe,
MFG EMIR

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
Moderiert von user profile iconraziel: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 10.02.2006 um 19:20
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Sa 11.02.06 09:58 
Was steht denn im Click drin? Ich vermute da setzt du das x/y der Maus oder rechnest du da noch groß?
Könntest du da mal Screenshots posten wie es aussieht/aussehen sollte?
Blackheart666
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2195

XP
D3Prof, D6Pers.
BeitragVerfasst: Sa 11.02.06 13:56 
So Richtig hab Ich es auch nicht verstanden in Etwa So ?
Hab deine Werte mal als Variablen angegeben, die Umrechnung ist vieleicht nicht ganz die richtige sollte nur mal als Beispiel dienen.
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:
61:
62:
unit Unit1;

interface

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

type
  Tbilderrahmen = class(TForm)
    ZButton: TButton;
    bild: TImage;
    procedure ZButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  bilderrahmen: Tbilderrahmen;
  x,y,z,s,t : integer ;


implementation

{$R *.dfm}

procedure Tbilderrahmen.ZButtonClick(Sender: TObject);
begin
 with bild.canvas do
  begin

  x :=x+20;
  y :=y-10;
  z:=z-4;
  t:=s*3;
  s:=z div 2;

  moveto(x,y);
  lineto(x+z,y);
  lineto(x+z,y-z);
  lineto(x,y-z);
  lineto(x,y);
  lineto(x+z,y-z);
  lineto(x+s,y-t);
  lineto(x,y-z);
  lineto(x+z,y);
  end;
end;

procedure Tbilderrahmen.FormCreate(Sender: TObject);
begin
 x :=75;
 y :=300;
 z:=50;
 s:=25;
 t:=75;
end;

end.
Emir88 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 11.02.06 16:34 
Titel: danke blackheart666
Du hast das problem gelöst!es funktioniert,
dankeschön,hast mir sher geholfen.
MFG EMIR