Entwickler-Ecke
Multimedia / Grafik - Klasse von Timage ableiten
Spurius - Mo 27.10.03 17:47
Titel: Klasse von Timage ableiten
Hallo,
ich will ein kleines Autorennspiel proggen und dabei gleicj meine Kenntnisse in OOP vertiefen bzw. mir richtige aneignen :D.
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 :shock:
Also wäre nett wenn mir da jemand weiterhelfen bzw. ein paar gute Ratschläge geben könnte.
MfG
Spurius
MrSaint - 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
NCortex - 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...
maximus - 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!
maze2k - 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?
Spurius - 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.
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:
| 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 - 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.
smiegel - 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.
maximus - 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 :wink:
cu,
Spurius - 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 - Di 28.10.03 18:28
Hi, geht jetzt, hatte vergessen ins onpaint-ereignis zu schreiben :oops:
MfG
Spurius
Spurius - Di 28.10.03 18:56
Hallo nochmal,
wie kann ich das bitmap jetzt in dem formular verschieben?
MfG
Spurius
GameG - 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 - 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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!