PB440B1 - CatchSprite zeigt verdrehtes und gespiegeltes Bild

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Falko hat geschrieben:Wenn das so ist, was hier auch in Wiki beschrieben wird, fehlt eigentlich eine Abfrage, zum BMP-Format ob die Höhe positiv oder negativ ist.

http://de.wikipedia.org/wiki/Windows_Bitmap

Nur wäre das dann nicht Spiegelverkehrt, sondern nur auf dem Kopf gestellt, oder? Aber in diesen Beispielen ist es beides.

Die neue Konstante #PB_PixelFormat_ReversedY , wie auch immer man diese verwenden kann, ist nur für die Y-Richtung ausgelegt.

Gruß Falko
In deinem Link steht bei biHeight:
Der Betrag gibt die Höhe der Bitmap in Pixel an.

* Ist der Wert positiv, so ist die Bitmap eine sogenannte "bottom-up"-Bitmap (die Bilddaten beginnen mit der untersten und enden mit der obersten Bildzeile). Dies ist die gebräuchlichste Variante.
* Ist der Wert negativ, so ist die Bitmap eine "top-down"-Bitmap (die Bilddaten beginnen mit der obersten und enden mit der untersten Bildzeile).
Exakt das hab ich damals gelesen und das hat sich bei mir eingeprägt, da ich das auch von einer WinAPI funktion (glaub BitBlt o.ä.) her kannte.

Vielleicht spiegelt Fred falsch und desshalb kommt es zu einer beidachsigen Spiegelung statt dass es nur auf dem Kopf steht.

Ich könnte mir vorstellen, dass das das Problem bei CatchSprite ist. Vielleicht sollte man mal die Bilder mit einem Hex-Editor bearbeiten und dort das Vorzeichen einfach mal verändern um zu sehen was dann passiert.
Zuletzt geändert von DarkDragon am 16.08.2009 16:55, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hast Recht. Die Bitmap im Beispiel ist wohl in Height negativ und sie hätte in Y gespiegelt werden sollen. Doch in Wirklichkeit wird sie in X gespiegelt und somit kommt es auch hin, das in beiden Achsen die Ausgabe gespiegelt ist.

:allright:

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Ich habe das jetzt mal mit dem Hexeditor angeschaut.

PureBasic.bmp
h00000010 00 00 A8 00 00 00 23 00 00 00 01 00 18 00 00 00

das wären Höhe 35 Pixel und nichts negativ

PureBasicLogo.bmp
h00000010 00 00 7D 01 00 00 44 00 00 00 01 00 08 00 01 00

Und hier wären das 68 und auch nicht negativ.

Daran kann's nicht liegen.

Gruß Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Trotz 2. Beta scheint es wohl noch nicht [Done] und wohl nicht so wichtig zu sein. Ich habe hier mal den Unterschied mit dem selben "IncludeBinary" einmal als CatchSprite und einmal als CatchImage dargestellt.

Ich hoffe, das nicht nur ich den Unterschied trotz Beta2 sehen kann :freak:
Da die Höhe des Bitmaps nicht negativ ist, dürfe das Sprite auch nicht horizontal gespiegelt sein, oder?

Code: Alles auswählen

InitSprite()
OpenWindow(0,100,100,400,180,"Test CatchSprite")
OpenWindowedScreen(WindowID(0),0,0,400,100,0,0,0)
If CatchSprite(0, ?Pic) 
  DisplaySprite(0,10,15) ; Same IncludeBinary with Catch-, and Displaysprite is reverse and reflected?
EndIf

If CatchImage(1,?Pic)
   ImageGadget( 2, 10, 105, 0, 0, ImageID(1)); Same IncludeBinary with Catchimage and Imagegardget
EndIf

Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow

End
Pic:IncludeBinary "F:\Purebasic4_4BetaX86\Examples\Sources\Data\PureBasicLogo.bmp"
[Edit]

Ich habe mich nochmal überwunden es im englischen Forum aufzufrischen.
http://www.purebasic.fr/english/viewtop ... 450#296450

[/Edit]

Gruß Falko
Zuletzt geändert von Falko am 18.08.2009 21:07, insgesamt 1-mal geändert.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Ich kann ihn auch sehen, der Sprite ist immernoch Spiegelverkehrt und falsch herum, während das Image ganz normal dargestellt wird.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
HeX0R
Beiträge: 3054
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Na Gott sei Dank hab ich das hier noch gefunden, bevor ich mir die letzten Haare ausgerauft habe.

Bei mir tritt dieser Fehler im übrigen auch mit dem DirectX9 Subsystem auf.

Das fiese ist, ich habe vier Pfeile in alle Himmelsrichtungen und zwei davon sind natürlich (auf den ersten Blick) nicht gespiegelt (fies)...

Ich hoffe keine Antwort im englischen bedeutet "Wir arbeiten dran" und nicht "später vielleicht".
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

HeX0R hat geschrieben: Bei mir tritt dieser Fehler im übrigen auch mit dem DirectX9 Subsystem auf.
Das einzige Subsystem was verschont ist, ist OpenGL.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
HeX0R
Beiträge: 3054
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Das hab ich auch mal ausprobiert, da gibts aber offensichtlich den Befehl DisplayTranslucentSprite() nicht?

[Edit]
Hui ui ui, das OpenGL-Subsystem macht aber seltsame Sachen.
Alle Sprites korrupt, InitSound() gibt immer 0 zurück, usw...

Das lass ich lieber.
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag von Thorium »

HeX0R hat geschrieben: [Edit]
Hui ui ui, das OpenGL-Subsystem macht aber seltsame Sachen.
Alle Sprites korrupt, InitSound() gibt immer 0 zurück, usw...

Das lass ich lieber.
Hm, ja im Eimer isses schon aber InitSound funktioniert bei mir. o.O
Was im Eimer ist, ist StartDrawing. Das konvertiert ein 32bit Sprite in ein 24bit Sprite.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
HeX0R
Beiträge: 3054
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Thorium hat geschrieben: Hm, ja im Eimer isses schon aber InitSound funktioniert bei mir. o.O
Hier auch?

Code: Alles auswählen

InitSprite()
InitKeyboard()
InitMouse()


OpenWindow(0, 0, 0, 800, 600, "...", $C8001)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 1, 0, 0)

Debug InitSound()
[Edit]
Ah o.k., OpenGL mag wohl diese Reihenfolge nicht...
Antworten