Die DX7 Lib (c)2003 Kai Schmiegelt.
Aktuelle Version 1.0 ( Download )

 

Übersicht
-------------
1. Vorwort
2. Benutzung der Lib
3. Initialisierungs-Beispiel
4. Befehlsübersicht
5. Wichtige Hinweise

 

 

1. Vorwort
--------------

Die DX7 Lib ist, wie der Name schon sagt, eine Sammlung von Funktionen um leichter und schneller mit
DirectX 7 arbeiten zu können.
Sie beinhaltet jedoch kein 3D, sondern ist nur für 2D Spiele ausgelegt. Aber es muss ja nicht immer nur 3D sein.
Nachdem mittlerweile fast jedes MauMau schon in 3D veröffentlicht wird hab ich den Entschluss gefasst
diese Lib zu veröffentlichen.
Besonders geeignet ist sie für Leute die hin und wieder gerne mal ein Spiel coden, aber nicht die Zeit finden
DirectX zu lernen, da diese Lib keine DirectX Kenntnisse voraussetzt.
Jedoch sollte der Umgang mit C++ und der WinApi kein Fremdword sein, und auch das Wissen wie man ein Spiel realisiert
sollten vorhanden sein. Darauf wird dieses kleine Tutorial nicht eingehen.
Dafür bietet die Lib alle wichtigen Funktionen um Grafiken zu laden, zu kopieren, zu manipulieren und
anzuzeigen. Selbst eine Pixelgenaue Kollisions-Erkennung beinhaltet die Lib, damit dem Weltraum-Shooter nichts mehr
im Wege steht.

 

2. Benutzung der Lib
----------------------------

Diese Lib wurde mit dem Visual C++ 6.0 erstellt. Ich nehme mal starkt an, dass sie auch nur auf diesen
funktionieren wird. Aber ein Test wirds beweisen.
Das Wichtigste was sie brauchen, um die Lib zu verwenden, ist das DirectX-SDK von Mircosoft (release Version!).
Dieses Packet enthält die Lib-und Header-Dateien für DirectX. Es muss mind. das SDK für DirectX 7,
oder höher, ebenso DirectX ansich,  installiert werden!
Soweit ich in Erinnerung habe passt das Installationsprogramm des SDK die Pfad-Verzeichnisse im
Visual C++ selbstständig an. Falls nicht können sie diese im Visual C++ wie folgt einstellen:
( wenn das SDK schon installiert ist können sie den Absatz überspringen )

opt1.png (11872 Byte)


Nach einen Klick auf Optionen erscheint folgendes Fenster (Klicken sie auf den Reiter 'Verzeichnisse'):

opt2.png (9158 Byte)

Die Pfadangaben können natürlich variieren. Achten sie darauf, dass das Verzeichnis von DirectX
an oberster Stelle steht. Dies können sie einstellen in dem sie den Eintrag markieren und mittels
den schwarzen Pfeilen, bzw. gedrückter Maustaste, verschieben.
Sollte von DirectX hier nichts zu sehen sein fügen sie den Include-Pfad hier hinzu.
Danach überprüfen die noch den Lib-Pfad von DirectX:

opt3.png (9383 Byte)

Achten sie auch hier wieder darauf, dass der Lib-Pfad ganz oben in der Liste steht.
Wenn sie möchten können sie auch die DXLib in ein eigenes Verzeichnis kopieren und dann in der selben
Methode hier in die Verzeichnissliste eintragen. Das erspart ihnen später das manuelle Hinzufügen
der Lib in ihr Projekt.

Wenn bis hierher alles Reibungslos geklappt hat kann es los gehen, denn DirectX ist nun in ihrer
Entwicklungsumgebung verfügbar.

 

3. Programm-Beispiel
-------------------------------

An dieser Stelle setze ich einfach mal vorraus, dass sie den Visual C++ gestartet und ein neues Win32 Projekt
erstellt haben. Wenn nicht können sie auch den Beispiel-Code im Source-Verzeichnis öffnen und das Projekt weiter verfolgen.

Als erstes muss die Lib ins Projekt aufgenommen werden.
Dazu kopieren sie die DXLib Dateien (.h .lib) in ihr Projekt-Verzeichnis.
Danach fügen sie die Dateien dem Projekt hinzu:

opt4.png (12205 Byte)

Nach der Bestätigung von Dateien erscheint ein Dialogfeld um die Dateien zu wählen.
Markieren sie die DXClass.lib und DXClass.h und klicken sie auf OK.

Jetzt muss noch Microsoft's ddraw.lib in unser Projekt.
Drücken sie im Visual C++ die Tasten ALT + F7 und es erscheint folgendes Fenster:

opt5.png (11892 Byte)

Klicken sie auf den Reiter 'Linker' und fügen sie unter Objekt-/Bibliothek-Module
ddraw.lib hinzu. OK klicken, fertig.

Da wir die Release-Version des DirectX SDK verwenden, Visual C++ aber Standardmässig das Projekt
als Debug erstellt, ändern wir jetzt auch dieses, und zwar unter:

opt6.png (13020 Byte)

Danach erscheint folgendes Fenster:

opt7.png (6040 Byte)

Wählen sie die Release-Version und bestätigen sie durch einen Klick auf OK.

Jetzt können wir uns wieder voll und ganz auf das Programm konzentrieren.
Fügen sie nun in ihrem Projekt-Code, gaaaaaanz oben folgende Zeile hinzu:

#define INITGUID

danach includen wir den Header der Lib:

#include "DXClass.h"

Wenn wir jetzt mal unsere Sourcen testweise compilieren dürfte kein Fehler erscheinen,
höchstens die Warnung:
Alle Verweise auf "DDRAW.dll" wurden durch /OPT:REF verworfen
Diese können wir aber ignorieren, da sie später verschwindet.

Nun verschaffen wir und mal Zugriff auf die DXLib. Ich verwende grundsätzlich einen globalen
Zeiger, werde dies also hier im Beispiel auch tun.

DXClass *g_pGfx = NULL;

In der WinMain verschaffen wir uns dann Zugriff

if( (g_pGfx = new DXClass()) == NULL )
{
      MessageBox( hWnd, "DX-Class Instanz Fail!", NULL, MB_OK );
      return 0;
}

Damit ist nun unser Projekt DirectX fähig.

Jetzt ist es an der Zeit sich Gedanken darüber zu machen wie gross der Screen sein soll.
640x480 , 800x600, 1024x768 ?

Wir nehmen 640x480. Die Farbtiefe ist bei der DXLib grundsätzlich 16 Bit.
Also initialisieren wir kurzer Hand DirectX über die DXLib Funktion 'DD_Init( ... )' :

// DX initialisieren
if( g_pGfx->DD_Init( hWnd, 640, 480, 0 ) == false )
{
      MessageBox( hWnd, "DirectX konnte nicht initialisiert werden", NULL, MB_OK );       
      return 0;
}

Als Parameter wurde der Fensterhandle und die ScreenX/Y Grösse übergeben. Der letzte Parameter ist immer 0.
Wenn man das Programm jetzt compiliert und starten würde, wird ihr Monitor evtl. klicken und den Screen
kurz auf schwarz schalten. Das war dann einmal DirectX und zurück.
Also ist nach dem Initialisieren der Aufruf einer Spiel-Schleife zu empfehlen.

Nun zu dem Konzept wie Grafiken geladen und verwaltet werden.
Ab dieser Stelle werd ich jetzt mal das Wort "lib" vermeiden und auf Class wechseln, da es sich ja eigentlich
um eine Class handelt, wo der .cpp Teil eben als .lib bei liegt.
Bei jeder Funktion, wo ein Bitmap geladen oder erzeugt wird, liefert die Class einen Zeiger auf
DX7SURFACE zurück.
Der Aufbau dieser Struktur ist...

typedef struct
{
    LPDIRECTDRAWSURFACE7 lpDDSurface;
    DDSURFACEDESC2 ddsDesc2;
    int iPosX;
    int iPosY;
   
}DX7SURFACE, *PDX7SURFACE;

... und ist in der DXClass.h zu finden.

An den letzten drei Parametern sollte tunlichst nichts gemacht werden, damit habe ich nur verhindert, dass man
bei jeden Zeichenaufruf auch die Grösse des Bitmaps übergeben muss (da Faulheit bekanntlich siegt).
Diese sind  nämlich später darin abgelegt, ebenso die aktuelle Position.
Wer diese Werte mutwillig verändert soll sich also nicht wundern wenn komische Sachen passieren.

Um also jetzt ein Bitmap zu laden bedient man sich dieser Struktur.
Beispiel:

PDX7SURFACE pBitmap = NULL;
nun ist pBitmap ein Zeiger auf
DX7SURFACE und wurde mit NULL initialisiert.

Jetzt laden wir mal ein Bitmap: ( die Farbe 255,0,255 (lila) wird als tranzparent behandelt )

pBitmap = g_pGfx->DD_LoadBitmapFromFile( "bild.bmp", true );

Ist pBitmap jetzt NULL gab es einen Fehler, ansonsten ist das Bild geladen.
Als Parameter ist der Erste ein Filename des Bildes was geladen werden soll, mit dem Zweiten entscheiden wir
ob das Bild in den Grafikkartenspeicher geladen werden soll (true) oder in den Systemspeicher (false).
Wenn true angegeben ist wird die Ladefunktion versuchen auf alle Fälle das Bitmap in den Grafikkartenspeicher
zu laden. Sollte das nicht klappen wird versucht das Bitmap in dem Systemspeicher unterzubringen.
Klappt weder das Eine, noch das Andere, oder ist das File nicht auffindbar, liefert die Funktion einen NULL-Zeiger zurück.
Wenn also NULL geliefert wird sollte man am besten erstmal checken ob das File überhaupt existiert, bevor man seine
Grafikkarte als Schuldigen dahin stellt. :)

Aber da wir ja optimistisch sind, und jetzt davon ausgehen, dass das Bitmap geladen wurde, können wir es fix in den
Backbuffer kopieren.

Ist das Bitmap nicht so gross wie der BackBuffer empfieht es sich diesen erstmal zu leeren:

g_pGfx->DD_ClearBackBuffer( 0, 0, 0 );
Die drei Parameter geben dabei die Farbwerte RGB an. Damit ist der BackBuffer nun schwarz.

Nun wollen wir das Bitmap in den BackBuffer kopieren:

g_pGfx->DD_PutImage( pBitmap, 0, 0 );
Der erste Parameter ist ein Zeiger auf
DX7SURFACE, die letzten Beiden sind die X und Y Koordinaten, wo denn das
Bitmap im BackBuffer überhaupt erscheinen soll. In diesen Falle bei 0, 0 , also oben links.

Und da wir an dieser Stelle noch immer nix sehen würden schalten wir den BackBuffer in den Vordergrund:

g_pGfx->DD_PutScreen();

Ergebnis: Bild auf dem Monitor.
Wenn man das Programm beendet ist daran zu denken, dass man die Bitmaps wieder aus dem Speicher wirft
da das die Class NICHT selbstständig macht. Aber sie besitzt eine Funktion dazu.
Ein Aufruf von
g_pGfx->DD_Delete( pBitmap );
würde das geladene Bitmap incl. der Struktur zunichte machen.

Bei diesen Tutorial gibt es ein Verzeichnis "Source", wo genau das passiert wie eben alles beschrieben.

Wer es bis hierher verstanden hat, dem steht nichts mehr im Weg ein Spiel zu coden.
Da ich natürlich nicht zu jeder Funktion ein Programmbeispiel machen kann, kommt als letztes Kapitel eine
Beschreibung aller Funktionen der Class.

 

4. Befehlsübersicht
--------------------------

Init Funktionen
Lade Funktionen
Ausgabe Funktionen
Create Funktionen
Restore Funktionen
Copy Funktionen
Get Funktionen
Lösch Funktionen
Diverse Funktionen
GDI Funktionen

 

// Init Funktionen
//
bool DD_Init( HWND hwnd, DWORD dwScreenSizeX, DWORD dwScreenSizeY, DWORD dwReserved );

Initialisiert die DXClass. Ist als erstes aufzurufen.
Erwartet: Handle des Hauptfensters
                Screengrösse X Richtung
                Screengrösse Y Ruchting
                dwReserved immer 0
Liefert: true bei Erfolg, false bei Fehler

--------
// Lade Funktionen
//
PDX7SURFACE DD_LoadBitmapFromFile( char *strFilename, bool bToVideoMemory );

Lädt ein Bitmap von einen Datenträger in den System/Video Speicher

Erwartet: Filename des Bitmaps, das geladen werden soll
                true für laden ins Videomem, false für laden in den Systemspeicher

Liefert: Zeiger auf DX7SURFACE-Struktur ( NULL = Fehler )

--------

PDX7SURFACE DD_LoadBitmapFromResource( UINT iResID, bool bToVideoMemory );

Lädt ein Bitmap aus einer Resource in den System/Video Speicher

Erwartet: ResourceID der Resource
                 true für laden ins Videomem, false für laden in den Systemspeicher

Liefert: Zeiger auf DX7SURFACE-Struktur ( NULL = Fehler )

--------

PDX7SURFACE DD_LoadBitmapFromMemory( BYTE *pData, bool bToVideoMemory );

Lädt ein Bitmap aus dem Hauptspeicher in den System/Video Speicher

Erwartet: Zeiger auf die Bitmapdaten
                 true für laden ins Videomem, false für laden in den Systemspeicher

Liefert: Zeiger auf DX7SURFACE-Struktur ( NULL = Fehler )

--------

// Ausgabe Funktionen
//
void DD_PutScreen( void );

Bringt den BackBuffer auf den Screen

Erwartet: *-*
Liefert: *-*

--------

void DD_PutImage( PDX7SURFACE pSurfaceStruct, int iScreenPosX, int iScreenPosY );

Kopiert ein Bitmap in den BackBuffer

Erwartet: gültigen Zeiger auf DX7SURFACE
                XPosition an der das Bitmap in den BackBuffer kopiert werden soll
                YPosition an der das Bitmap in den BackBuffer kopiert werden soll

Liefert: *-*

--------

void DD_PutImageXY( PDX7SURFACE pSurfaceStruct, int iScreenPosX, int iScreenPosY,
                    int iFromSrcX, int iFromSrcY, int iToSrcX, int iToSrcY ); 

Kopiert einen Teilausschnitt eines Bitmaps in den BackBuffer

Erwartet: gültigen Zeiger auf DX7SURFACE
                X Position an der das Bitmap in den BackBuffer kopiert werden soll
                Y Position an der das Bitmap in den BackBuffer kopiert werden soll
                X Position von der im Source-Surface kopiert wird
                Y Position von der im Source-Surface kopiert wird
                X Position bis zu der im Source-Surface kopiert wird
                Y Position bis zu der im im Source-Surface kopiert wird

Liefert: *-*

--------

void DD_SetPixel( PDX7SURFACE pSurfaceStruct, int iPosX, int iPosY,
        BYTE byRed, BYTE byGreen, BYTE byBlue );

Setzt einen Pixel  in einer Surface in einer betimmten Farbe

Erwartet: gültigen Zeiger auf DX7SURFACE
                 X Position in der Surface
                 Y Position in der Surface
                 Farbwert Rot
                 Farbwert Grün
                 Farbwert Blau

Liefert: *-*

--------

void DD_SetPixelBackBuffer( int iPosX, int iPosY, BYTE byRed, BYTE byGreen, BYTE byBlue );

Setzt einen Pixel  im BackBuffer in einer betimmten Farbe

Erwartet: X Position vom BackBuffer
                 Y Position vom BackBuffer
                 Farbwert Rot
                 Farbwert Grün
                 Farbwert Blau

Liefert: *-*

--------


// Create Funktionen
//
PDX7SURFACE DD_CreateSurface( int iSizeX, int iSizeY, bool bToVideoMemory );

Erzeugt eine Surface für ein Bitmap

Erwartet: X-Grösse der zu erzeugenden Surface
                 Y-Grösse der zu erzeugenden Surface
                 true für erzeugen im Videomem, false für erzeugen im Systemspeicher

Liefert: Zeiger auf DX7SURFACE-Struktur ( NULL = Fehler )

--------

PDX7SURFACE DD_CreateSurfaceFromSurface( PDX7SURFACE bSrcSurfaceStruct, bool bToVideoMemory );

Erzeugt eine Surface von einer Anderen in den selben Ausmassen

Erwartet: gültigen Zeiger auf DX7SURFACE (Quelle)
                 true für erzeugen im Videomem, false für erzeugen im Systemspeicher

Liefert: Zeiger auf DX7SURFACE-Struktur ( NULL = Fehler )

--------

PDX7SURFACE DD_CreateSurfaceFromSurfaceXY( PDX7SURFACE pSrcSurfaceStruct, int iFromSrcXPos,
        int iFromSrcYPos, int iSizeX, int iSizeY, bool bToVideoMemory );

Erzeugt eine Surface von einen Teilausschnitt einer anderen Surface

Erwartet: gültigen Zeiger auf DX7SURFACE (Quelle)
                X Position von der im Source-Surface kopiert wird
                Y Position von der im Source-Surface kopiert wird
                X Grösse der neuen Surface
                Y Grösse der neuen Surface
                 true für erzeugen im Videomem, false für erzeugen im Systemspeicher

Liefert: Zeiger auf DX7SURFACE-Struktur ( NULL = Fehler )
               
--------

// Restore Funktionen
//
void DD_Restore( void )

Stellt sämtliche Surfaces wieder her, incl. Backbuffer, da diese zerstört werden wenn die Anwendung den Focus verliert.
Diese Funktion muss als erstes, nach der Anwendungswiederherstellung, aufgerufen werden.

Erwartet: *-*

Liefert:: *-*

--------

bool DD_RestoreSurfaceFromFile( PDX7SURFACE pSurfaceStruct, char *strFilename );

Lädt die Grafikdaten neu in ein Surface, wenn dieses durch den Focusverlust der Anwendung zerstört wurde.

Erwartet: gültugen Zeiger auf eine Surface-Struct
                 Filename vom Bitmap File, welches neu geladen werden soll

Liefert: true bei Erfolg, sonst false

--------

bool DD_RestoreSurfaceFromResource( PDX7SURFACE pSurfaceStruct, UINT iResID );

Lädt die Grafikdaten neu in ein Surface, wenn dieses durch den Focusverlust der Anwendung zerstört wurde.

Erwartet: gültugen Zeiger auf eine Surface-Struct
                 Bitmap ResourceID, welches neu geladen werden soll

Liefert: true bei Erfolg, sonst false

--------

bool DD_RestoreSurfaceFromMemory( PDX7SURFACE pSurfaceStruct, BYTE *pData );

Lädt die Grafikdaten neu in ein Surface, wenn dieses durch den Focusverlust der Anwendung zerstört wurde.

Erwartet: gültugen Zeiger auf eine Surface-Struct
                 Zeiger auf Bitmap-Daten, welche neu geladen werden sollen

Liefert: true bei Erfolg, sonst false

--------


// Copy Funktionen
//
void DD_CopySurfaceToSurface( PDX7SURFACE pDestSurfaceStruct, PDX7SURFACE pSrcSurfaceStruct,
        bool bColorKey, bool bResizeSource);

Kopiert eine Surface in eine Andere

Erwartet: gültigen Zeiger auf DX7SURFACE (Ziel)
                gültigen Zeiger auf DX7SURFACE (Quelle)
                true wenn der ColorKey beachtet werden soll (dann lila = tranzparent), ansonsten false
                true wenn die Source-Surface an die Grösse der Ziel-Surface angepasst werden soll, sonst false

Liefert: *-*

--------

void DD_CopySurfaceToSurfaceXY( PDX7SURFACE pDestSurfaceStruct, PDX7SURFACE pSrcSurfaceStruct,
        int iToDestXPos, int iToDestYPos );

Kopiert eine Surface in eine Andere mit Positionsangaben

Erwartet: gültigen Zeiger auf DX7SURFACE (Ziel)
                gültigen Zeiger auf DX7SURFACE (Quelle)
                X Position in der Ziel-Surface
                Y Position in der Ziel-Surface

Liefert: *-*

--------

// Get Funktionen
//
int DD_GetScreenX( void );

Liefert die aktuelle Screengrösse in X-Richtung

Erwartet: *-*
Liefert: Screen X Grösse

--------

int DD_GetScreenY( void );

Liefert die aktuelle Screengrösse in Y-Richtung

Erwartet: *-*
Liefert: Screen Y Grösse

--------

DWORD DD_GetColorKey( void );

Liefert die aktuelle ColorKey Farbe

Erwartet: *-*
Liefert: ColorKey Farbe

--------

DWORD DD_GetColor( BYTE byRed, BYTE byGreen, BYTE byBlue );    

Wandelt BYTE Farbwerte in ein DX Format um.

Erwartet: Farbwert Rot
                 Farbwert Grün
                 Farbwert Blau

Liefert: Farbwert im DX Format

--------

DWORD DD_GetPixel( PDX7SURFACE pSurfaceStruct, int iPosX, int iPosY );

Liesst einen Pixel aus einer Surface

Erwartet: gültigen Zeiger auf DX7SURFACE
                X Position in der Surface
                Y Position in der Surface

Liefert: Farbwert im DX Format

--------

DWORD DD_GetPixelBackBuffer( int iPosX, int iPosY );

Liesst einen Pixel aus dem BackBuffer

Erwartet: X Position im BackBuffer
                Y Position im BackBuffer

Liefert: Farbwert im DX Format

--------

DWORD DD_GetFreeVideoMem( void );

Liefert den freien Grafikkarten-Speicher

Erwartet: *-*

Liefert: freien Videospeicher

--------

DDCAPS DD_GetDeviceCaps( void )

Liefert die Eigenschaften der verwendeten Grafikkarte.

Erwartet: *-*

Liefert: Grafikkarten-Eigenschaften


--------

LPDIRECTDRAWSURFACE7 DD_GetBackbuffer( void )

Liefert einen Zeiger auf den BackBuffer

Erwartet: *-*

Liefert: BackBuffer Zeiger

--------

// Lösch Funktionen
//
void DD_Delete( PDX7SURFACE pSurfaceStruct );

Löscht eine Bitmap-Surface incl. deren Struktur

Erwartet: gültigen Zeiger auf DX7SURFACE

Liefert: *-*

--------

void DD_ClearSurface( PDX7SURFACE pSurfaceStruct, BYTE byRed, BYTE byGreen, BYTE byBlue );

Reinigt eine Surface mit einer bestimmten Farbe

Erwartet: gültigen Zeiger auf DX7SURFACE
                 Farbwert Rot
                 Farbwert Grün
                 Farbwert Blau                

Liefert: *-*

--------

void DD_ClearBackBuffer( BYTE byRed, BYTE byGreen, BYTE byBlue );

Reinigt den BackBuffer mit einer bestimmten Farbe

Erwartet: Farbwert Rot
                 Farbwert Grün
                 Farbwert Blau                

Liefert: *-*

--------

// Diverse Funktionen
//
void DD_SetGamma( BYTE byRed, BYTE byGreen, BYTE byBlue );

Setzt den Gamma-Wert ( Fade In/Out Effekt )
Erwartet:  Farbwert Rot   (0-100)
                 Farbwert Grün (0-100)
                 Farbwert Blau (0-100)    

Liefert: *-*

--------

bool DD_CollisionCheck( PDX7SURFACE pSurfaceStruct1, PDX7SURFACE pSurfaceStruct2 );

Überpüft ob sich zwei Objekte berühren (Pixelgenau)

Erwartet: gültigen Zeiger auf DX7SURFACE von Objekt 1
                gültigen Zeiger auf DX7SURFACE von Objekt 2

Liefert: true bei Kollision, sonst false

--------

void DD_MirrorSurface( PDX7SURFACE pSurfaceStruct, bool bHorizontal );

Spiegelt eine Surface

Erwartet: gültigen Zeiger auf DX7SURFACE die zu Spiegeln ist.
                 true wenn horizontal gespiegelt werden soll, false = vertikal

Liefert: *-*

--------
   
// GDI Funktionen (langsam aber nützlich)
//
void DD_GDILine( int iFromX, int iFromY, int iToX, int iToY, int iPenStrong, COLORREF color );

Zeichnet eine Linie mit Hilfe des GDI in den BackBuffer

Erwartet: X Startposition der Linie
                 Y Startposition der Linie
                 X Endposition der Linie
                 Y Endposition der Linie
                 Zeichenstiftstärke
                 Farbwert als COLORREF Format

Liefert: *-*

--------

void DD_GDITextOut( char *strText, int iPosX, int iPosY );

Schreibt einen Text an einer bestimmten Stelle in den BackBuffer

Erwartet: den Text der auszugeben ist
                 X Position im BackBuffer
                 Y Position im BackBuffer

Liefert: *-*

--------

void DD_GDITextOut( char *strText, int iPosX, int iPosY,
                    BYTE byForeRed, BYTE byForeGreen, BYTE byForeBlue,
                    int iTabSpace, bool bTransparent );

Schreibt einen Text an einer bestimmten Stelle in den BackBuffer mit Eigenschaftenangabe (Von Escape)

Erwartet: den Text der auszugeben ist
                 X Position im BackBuffer
                 Y Position im BackBuffer
                 Farbwert Rot
                 Farbwert Grün
                 Farbwert Blau
                 Zeichenabstand
                 true wenn Hintergrund tranzparent sein soll, sonst false

Liefert: *-*

 

5. Wichtige Hinweise
-----------------------------

Um erfolgreich mit der Class arbeiten zu können sollten ein paar Kleinigkeiten beachtet werden.
Bitmaps sollten nie grösser als der Screenbereich sein.
Ist der Screen auf 640x480 eingestellt, und Du willst ein 800x600 Pixel Bitmap laden, so wird allerdings
nur 640x480 dargestellt. Die restlichen Pixel wandern ins Nirvana. Warum weiss ich allerdings nicht.
Zudem bringt sowas die Kollisionserkennung ins schwitzen.

Programmiere bitte Ressourcenschonend. D.h. wenn Du Sprites erstellst, dann nicht so:

sp1.png (1050 Byte)

sondern besser so:

sp2.png (757 Byte)

Auch wenn das Lila später nicht zu sehen ist, ist es trotzdem da.


Jetzt kann ich Dir nur noch viel Spass beim Programmieren wünschen.

Wenn Du mehr wissen möchtest, Fragen hast, oder sonstige Anliegen, dann kannst Du mich unter
http://www.midiarea.com/email.php
kontaktieren.

Merke: Die DX7 Lib ist umsonst. Deshalb würde ich mich über einen Vermerk in dein Programm freuen.

PS:
Meine EMail werde ich an dieser Stelle natürlich  nicht mehr angeben, da es so vorpubertäre Pickeldies gibt die nichts besseres zu
tun haben als den ganzen Tag EMails mit ca. 120KB grossen, nervigen, Anhängseln zu verschicken und auch noch meinen, dass ich
so blöd ware diese zu öffnen. Sucht euch lieber nen Job.
(Das musste einfach mal gesagt werden)