Autor Beitrag
Spurius
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: 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 :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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 126

WIN 2000
D7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: 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.
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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 user profile iconTino: Code- durch Delphi-Tags ersetzt.
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Di 28.10.03 15:14 
pack das bild ("test1.bmp") in das Verzeichnis, wo auch die EXE drin ist und schreib dann
ausblenden Delphi-Quelltext
1:
car.loadfromresourcename(hinstance,ExtractFilePath(application.exename)+'test1.bmp');					

MrSaint

Moderiert von user profile iconTino: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: 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,

_________________
mfg.
mâximôv
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Di 28.10.03 18:28 
Hi, geht jetzt, hatte vergessen ins onpaint-ereignis zu schreiben :oops:
MfG
Spurius
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Di 28.10.03 18:56 
Hallo nochmal,
wie kann ich das bitmap jetzt in dem formular verschieben?
MfG
Spurius
GameG
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

WIN7
D2007
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 34

WIN7
D2007
BeitragVerfasst: 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