| |
|
|
| 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 grande 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 |
|
|
| |
|
|
|
| Hallo Sascha,
wenn eine grafische Funktion mit zwei Bytearrays arbeitet, dann müßen beide Bytearray aber auch gleich grande 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 grande (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 grande sind, z.B. 800x600. Benutze anstatt LoadExtBmp(0,...) lieber CreateExtBmp(...)
Dann klappt es auch )
Saluto, Frank |
|
|
| |
|
|
|
| hi frank!
und das ist bei allen effekten so? also allen funktionen die initextfx brauchen!?
Dann wird mir einiges klarer!
Sascha |
|
|
| |
|
|
|
| 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 naturalmente in undefinierte Speicherbereiche, und das ist nie gut, oder...?
Saluto, Frank |
|
|
| |
|
|
|
| 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? |
|
|
| |
|
|
|
| Ciao,
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 HDCs.
Saluto, Frank |
|
|
| |
|
|
|
| hallo,
also so ganz klappen will es immernoch nicht!
ich habe folgenden code: KompilierenMarkierenSeparierendeclare 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 | 19.04.2004 ▲ | |
|
|
|
|
| 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. Saluto, Frank |
|
|
| |
|
|