| Autor |
Beitrag |
Spurius
      
Beiträge: 142
Win XP Home
D3 Prof, D7 Prof
|
Verfasst: Mo 27.10.03 17:47
Hallo,
ich will ein kleines Autorennspiel proggen und dabei gleicj meine Kenntnisse in OOP vertiefen bzw. mir richtige aneignen  .
Also, ich habe probiert eine Klasse von Timage abzuleiten, aber das ging nicht, nur von TGraphicControl.
Die Klasse soll ein Bild darstellen können, x,y Koordinaten haben, etc. ..
Außerdem sollte das Bild(Auto) erst zur Laufzeit erzeugt werden.
Ist es sinnvoll sowas ohne delphiX etc. zu machen? Weil ich muss das Bild ja später auch drehen können
Also wäre nett wenn mir da jemand weiterhelfen bzw. ein paar gute Ratschläge geben könnte.
MfG
Spurius
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Mo 27.10.03 17:54
ich bin da net wirklcih in der materie drin, aber ich mein, dass DelphiX eine Delphi-Implementation von DirectX is, oder? und DirectX is auf jeden Fall den Windows-Grafik-Routinen vorzuziehen (Geschwindigkeit, Effekte etc.)...
Wenn du aber "nur" OOP lernen willst, dann probier das ruhig aus mit dem ableiten von Klassen
MrSaint
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
NCortex
      
Beiträge: 126
WIN 2000
D7 Enterprise
|
Verfasst: Di 28.10.03 00:12
ähm.... warum leitest du das von Timage ab? nimm doch einfach ne Tbitmap??? da kannste du mit x,y drauf malen, hinsetzen wo du willst.. etc...
_________________ "...by all means, do not use a hammer." (aus einer IBM Technikerdokumentation ca. 1920)
--->außer es kam von Microsoft<---
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Di 28.10.03 03:01
Ich würde vorschlagen, du leitest von TWinControl ab und zeichnest alles selbst direkt aufs canvas oder in einen puffer (TBitmap) und den dann auf das canvas!
_________________ mfg.
mâximôv
|
|
maze2k
      
Beiträge: 252
WIN 95, WIN NT 4.0, WIN 98, WIN 98SE, WIN 2000, RedHat Linux 7.3, Mandrake Linux 9.2, Knoppix Linux 3.3
D6 Pers
|
Verfasst: Di 28.10.03 03:25
Wenn wir schon dabei sind...
ich würd gern eine neue Klasse / Compo erstellen.
Diese soll aus einem TImage und einem TStaticText bestehen. Hab zwar schon ein paar Tuts durchsucht, aber irgendwie nix gefunden.
Ich kann zwar prima was von TImage ableiten und auch neue Funktionen und Eigenschaften hinzufügen, leider kann ich aber keinen TStaticText unter das Bild schaffen...
Kann mir da jemand helfen oder nen Link geben wo sowas erklärt is oder so?
_________________ Wer das Konzept der Unendlichkeit verstehen will, muss nur das Ausmaß menschlicher Dummheit betrachten. (Voltaire)
|
|
Spurius 
      
Beiträge: 142
Win XP Home
D3 Prof, D7 Prof
|
Verfasst: Di 28.10.03 12:38
Hi,
also erstmal Danke für die Antworten. Ich probier jetzt das Auto als eine von TBitmap abgeleitete Klasse zu erstellen.
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:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private public end; type tcar = class(tbitmap) procedure move; end; var Form1: TForm1; car: tcar; implementation
{$R *.dfm}
procedure tcar.move; begin end; procedure TForm1.FormCreate(Sender: TObject); begin car :=tcar.create; try car.loadfromresourcename(hinstance,'test1.bmp'); canvas.draw(20,20,car); finally car.free; end; end;
end. |
Jetzt bekomme ich die Fehlermeldung, dass eine Resource test1.bmp nicht gefunden wird. Wo muss man da den Pfad angeben? Ich hab mir das aus der Delphi.Hilfe abgeschaut, weil ich das mit dem Ableiten und dem Konstruktor nicht so checke. Also wo hab ich da den Fehler gemacht?
MfG
Spurius
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
MrSaint
      
Beiträge: 1033
Erhaltene Danke: 1
WinXP Pro SP2
Delphi 6 Prof.
|
Verfasst: Di 28.10.03 15:14
pack das bild ("test1.bmp") in das Verzeichnis, wo auch die EXE drin ist und schreib dann
Delphi-Quelltext 1:
| car.loadfromresourcename(hinstance,ExtractFilePath(application.exename)+'test1.bmp'); |
MrSaint
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
_________________ "people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
|
|
smiegel
      
Beiträge: 992
Erhaltene Danke: 1
WIN 7
D7 Prof., C#, RAD XE Prof.
|
Verfasst: Di 28.10.03 16:18
Hallo,
folgend ein Auszug aus der Delphi-Hilfe:
| Zitat: |
Beschreibung
Mit LoadFromResourceName wird die angegebene Bitmap-Ressource zusammen mit den Paletteninformationen aus der ausführbahren Datei eines Moduls geladen. Der Parameter ResName enthält den Namen der Ressource.
Hinweis
Verwenden Sie diese Routine anstelle von LoadBitmap API zum Laden von Bitmaps aus .RES-Dateien. LoadBitmap unterstützt keine Bilder mit 256 Farben.
|
So wie Du das machen willst geht es nicht. Du musst eine Resource-Datei (*.res) erstellen, die die Bitmaps enthält. Am leichtesten geht es, wenn Du den Borland-Resourceworkshop benutzt. Solltest Du den nicht haben, hilft Dir eine Suche hier im Forum bestimmt weiter.
Willst Du das Bild aus einer Datei laden, wie in Deinem Beispiel musst Du
car.LoadFromFile('test1.bmp') verwenden.
_________________ Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
|
|
maximus
      
Beiträge: 896
Win XP, Suse 8.1
Delphi 4/7/8 alles prof
|
Verfasst: Di 28.10.03 17:55
| smiegel hat folgendes geschrieben: | Hallo,
...
So wie Du das machen willst geht es nicht. Du musst eine Resource-Datei (*.res) erstellen, die die Bitmaps enthält. Am leichtesten geht es, wenn Du den Borland-Resourceworkshop benutzt. Solltest Du den nicht haben, hilft Dir eine Suche hier im Forum bestimmt weiter.
Willst Du das Bild aus einer Datei laden, wie in Deinem Beispiel musst Du
car.LoadFromFile('test1.bmp') verwenden. |
Also nix liegt ferner, als sprites aus den resourcen zu laden  Da muss man ja bei jeder änderung die resourcen neu erstellen etc.
LoadFromFile is schon besser! Nur ohne pfad sehr unsauber, weil der arbeitspfad auch abweichen kann
cu,
_________________ mfg.
mâximôv
|
|
Spurius 
      
Beiträge: 142
Win XP Home
D3 Prof, D7 Prof
|
Verfasst: Di 28.10.03 18:20
Hi,
also die Fehlermeldung bekomm ich mit loadfromfile nicht mehr, aber es wird auch nichts angezeigt!!??
Was mach ich da falsch?
MfG
Spurius
|
|
Spurius 
      
Beiträge: 142
Win XP Home
D3 Prof, D7 Prof
|
Verfasst: Di 28.10.03 18:28
Hi, geht jetzt, hatte vergessen ins onpaint-ereignis zu schreiben
MfG
Spurius
|
|
Spurius 
      
Beiträge: 142
Win XP Home
D3 Prof, D7 Prof
|
Verfasst: Di 28.10.03 18:56
Hallo nochmal,
wie kann ich das bitmap jetzt in dem formular verschieben?
MfG
Spurius
|
|
GameG
      
Beiträge: 34
WIN7
D2007
|
Verfasst: Di 28.10.03 20:14
Titel: ich sag mal was dazu
meine meinung zum thema ist, das es sinvoller wäre das ganze auf delphix (directx) zu stützen!
wäre im prinzip der selbe aufwand (kannst auch weite teile deines progs rüberkopieren).
weil: ich hab die erfahrung gemacht, das das arbeiten mit der canvas bzw bitmap ab und zu flackern könnte. und zu viele zeichenoperationen können das programm unnötig langsam machen.
und außerdem bietet directx mehr zeichenmöglichkeiten. ich hab ein ähnliches spiel gemacht...
kommt immer darauf an wie viel du kannst und wie viel du daraus machen willst!
--GG--
|
|
Spurius 
      
Beiträge: 142
Win XP Home
D3 Prof, D7 Prof
|
Verfasst: Di 28.10.03 21:14
Hi, an DirectX hatte ich mich mit 3d schon versucht, fand es aber sehr kompliziert. Wie meinst du konkret dass ich das machen sollte?
Könntest du mir dein Spiel mal schicken?
mrmustermann@gmx.de
MfG
Spurius
|
|
GameG
      
Beiträge: 34
WIN7
D2007
|
Verfasst: Mi 29.10.03 19:22
directx hat nicht nur 3d-grafiken!
mit dit directdraw (o.ä.) kann man einfach sachen zeichnen. ich versuch mal was zusammen zu stellen, da mein game viele mb's groß war!
have a nice prog
|
|