| Autor |
Beitrag |
Emir88
Hält's aus hier
Beiträge: 2
|
Verfasst: 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:
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 public 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 raziel: Delphi-Tags hinzugefügtModeriert von raziel: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Fr 10.02.2006 um 19:20
|
|
digi_c
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: 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
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: 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.
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 public 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 
Hält's aus hier
Beiträge: 2
|
Verfasst: 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
|
|
|