ProSpeed.dll
Wenn sie Fragen und Anregungen zu meiner ProSpeed DLL oder zu den Profan²-Sourcecodes und Demos haben, dann sind sie hier richtig. Auch neue Vorschläge sind jederzeit willkommen. Und bitte mit richtigem Namen und Email-Adresse einschreiben. Danke.

| Suchen
| Zurück zur Übersicht

Autor | Thema: semitrans problem
Sascha Willecke
| Datum:28.04.02 04:41 (sascha@snowboarding-net.de) |
hallo ich habe mal den folgenden demo code kopiert und die grafik angepasst! leider bekomme ich nur eine access violation! declare fxhandle1&, fxhandle2&, bytearray1&, bytearray2&, name$ fxhandle1&=LoadExtBmp(0,%hdc) 'Handle 1: leere Bitmap erzeugen name$="logo.bmp" fxhandle2&=LoadExtBmp(addr(name$),%hdc) 'Handle 2: Bild laden, z.B. 640x480 groß CopyExtBmp(fxhandle1&,0,0,800,600,%HDC,0,0,0) 'Inhalt des Profanfensters nach Handle 1 bytearray1&=InitExtFX(fxhandle1&) 'Byte-Array zu Handle 1 erzeugen bytearray2&=InitExtFX(fxhandle2&) 'Byte-Array zu Handle 2 erzeugen WhileLoop 100 SemiTrans(%HDC,0,0,bytearray2&,bytearray1&,&loop) 'Das Bild wird in 100 Schritten in die Wend 'Hintergrundgrafik eingeblendet FreeExtFX(bytearray1&) 'Byte-Array 1 wieder freigeben FreeExtFX(bytearray2&) 'Byte-Array 2 wieder freigeben FreeExtBmp(fxhandle1&) 'Handle 1 wieder freigeben FreeExtBmp(fxhandle2&) 'Handle 2 wieder freigeben was mache ich nur falsch? Sascha
Frank Abbing
| Datum:28.04.02 10:43 |
Hallo Sascha, wenn eine grafische Funktion mit zwei Bytearrays arbeitet, dann müßen beide Bytearray aber auch gleich groß sein (siehe Anleitung). Das ist bei dir nicht der Fall. fxhandle1&=LoadExtBmo(0,%HDC) Eine leere Bitmap in der aktuellen Windowsauflösung wird angelegt, also 1024x768 ??? fxhandle2&=LoadExtBmp(addr(name$),%hdc) 'Handle 2: Bild laden, z.B. 640x480 groß (oder ist deine Auflösung nur 640x480?) CopyExtBmp(fxhandle1&,0,0,800,600,%HDC,0,0,0) 'Inhalt des Profanfensters nach Handle 1 Wieder andere Werte ??? Also, du mußt sicher gehen, das beide Bytearray gleich groß sind, z.B. 800x600. Benutze anstatt LoadExtBmp(0,...) lieber CreateExtBmp(...) Dann klappt es auch ;-)) Gruß, Frank
Sascha Willecke
| Datum:28.04.02 11:38 (sascha@snowboarding-net.de) |
hi frank! und das ist bei allen effekten so? also allen funktionen die initextfx brauchen!? Dann wird mir einiges klarer! Sascha
Frank Abbing
| Datum:28.04.02 13:32 |
Hallo Sascha, genau, das steht aber auch in der Anleitung unter InitExtFX(), und ist ja auch logisch, wenn du zwei Speicher hast, und den einen veränderst und die veränderten Daten in den zweiten Speicher schreibst, und der Speicher ist aber zu klein, um alle daten zu erfassen, schreibst du natürlich in undefinierte Speicherbereiche, und das ist nie gut, oder...? Gruß, Frank
Sascha Willecke
| Datum:28.04.02 20:12 (sascha@snowboarding-net.de) |
ja das stimmt! hatte die anleitung nicht richtig gelesen! also ich habe ja nicht soviel anhnung von grafikformaten aber kann es eigentlich dann auch sein das verschiedene grafik-qualitäten (truecolor etc.) probleme machen?
Frank Abbing
| Datum:28.04.02 20:46 |
Hallo, nein, unterschiedliche Grafikformate spielen keine Rolle, nur die Breite der Bitmaps muß glatt durch vier teilbar sein. Intern arbeitet ProSpeed immer mit 24 Bit und geräteunabhängigen HDC's. Gruß, Frank
Sascha Willecke
| Datum:01.05.02 19:24 |
hallo, also so ganz klappen will es immernoch nicht! ich habe folgenden code: declare fxhandle1&, fxhandle2&, bytearray1&, bytearray2&, name$, logo& fxhandle1&=CreateExtBmp(%hdc,800,600) fxhandle2&=CreateExtBmp(%hdc,800,600) name$="pong3dlogo.gif" logo&=LoadExtImage(addr(name$),%hdc) 'Handle 2: Bild laden, z.B. 640x480 groß CopyExtBmp(fxhandle1&,0,0,800,600,%HDC,0,0,0) 'Inhalt des Profanfensters nach Handle 1 CopyExtBmp(fxhandle2&,0,0,800,200,logo&,0,0,0) bytearray1&=InitExtFX(fxhandle1&) 'Byte-Array zu Handle 1 erzeugen bytearray2&=InitExtFX(fxhandle2&) 'Byte-Array zu Handle 2 erzeugen WhileLoop 100 SemiTrans(%HDC,0,0,bytearray1&,bytearray2&,&loop) 'Das Bild wird in 100 Schritten in die Wend 'Hintergrundgrafik eingeblendet FreeExtFX(bytearray1&) 'Byte-Array 1 wieder freigeben FreeExtFX(bytearray2&) 'Byte-Array 2 wieder freigeben FreeExtBmp(logo&) FreeExtBmp(fxhandle1&) 'Handle 1 wieder freigeben FreeExtBmp(fxhandle2&) 'Handle 2 wieder freigeben ein hauptfenster existiert schon und wenn das logo eingeblendet wird dann komme komische grafikfehler (striche und verzerrungen)! Was kann das schon wieder sein? Sascha
Frank Abbing
| Datum: 01.05.02 21:11 |
Hi Sascha, zwei Dinge hab' ich in deinem Code entdeckt: 1.) LoadExtImage() hat nur einen Parameter, nicht zwei !!! 2.) fxhandle2& ist nur zu einem Teil mit Grafikdaten gefüllt worden, du kannst nicht davon ausgehen, das neu initierte Grafikflächen immer schwarz sind, manchmal befinden sich noch alte Daten darin...!? Probier' das mal. Gruß, Frank

| Zurück zur Übersicht

| Ein kostenloses WebMart Forum WebMart Homepage Tools kostenlos |