C# Monogame - Bild mit indiziertem Pixelformat

Hydrano

Lieutenant
Registriert
März 2008
Beiträge
937
Hi,

ich wollte mal wieder mein Abschlussprojekt vom Fachabi laden. Da ich nun Visual Studio 2012 habe und dort jetzt Monogame statt XNA benutze, konnte ich das Projekt so nicht einfach importieren.
Nun habe ich also ein neues Monogame Projekt angelegt und die Klassen, Contents etc. in das Projekt kopiert. Es lässt sich erstmal fehlerfrei kompilieren aber dann bekomme ich den folgende Fehler:

"Ein Grafikobjekt kann nicht aus einem Bild mit einem indizierten Pixelformat erstellt werden."

Alle Grafikobjekte sind im .png Format. Damals mit XNA funktionierte es einwandfrei, Monogame unterscheidet sich vom Prinzip ja kaum.

Also ich habe eine Klasse Background, diese hat einen Kontruktor der den ContentManager haben will.
Desweiteren habe ich eine Klasse Sprite. In Background erzeuge ich Objekte von der Klasse Sprite.

Background.cs
Code:
public class Background
    {
        public Sprite zug;

        Sprite BackgroundOne;
        Sprite BackgroundOne2;

        Sprite BackgroundTwo;
        Sprite BackgroundTwo2;
   // Das geht bis BackgroundFive2 und stellt 5 Layer für Backgroundscrolling dar. Ein fahrender Zug eben.

 public Background(ContentManager Content) // Konstruktor
        {            
            zug = new Sprite(); 
            zug.Texture = Content.Load<Texture2D>("Images/Background/zug_wagons"); // KEIN Fehler
            
            // Zuweisung Layer1
            BackgroundOne = new Sprite();
            BackgroundOne.Texture = Content.Load<Texture2D>("Images/Background/layer1_himmel"); // FEHLER
            BackgroundOne.Position = new Vector2(0, 0);
            BackgroundOne.Color = Color.White;
            BackgroundOne.Size = new Rectangle(0, 0, BackgroundOne.Texture.Width, BackgroundOne.Texture.Height);

            BackgroundOne2 = new Sprite();
            BackgroundOne2.Texture = Content.Load<Texture2D>("Images/Background/layer1_himmel");
            BackgroundOne2.Position = new Vector2(-BackgroundOne2.Texture.Width, 0);
            BackgroundOne2.Color = Color.White;
            BackgroundOne.Size = new Rectangle(0, 0, BackgroundOne2.Texture.Width, BackgroundOne2.Texture.Height);

Kommentiere ich diese Fehlerstelle aus, dann kommt der selbe bei BackgroundOne2.Texture. Das interessante jetzt nur ist das bei zug.Texture kein Fehler kommt.
Google konnte mir speziell zu Monogame keine Tipps liefern. Ich arbeite hier ja mit Texture2D's und nicht mit Bitmaps oder Images.
Und warum kam ein solcher Fehler dann damals nicht ?
 
Vielen Dank, funktioniert jetzt wieder einwandfrei :)
Manchmal liegen die Fehler eben da wo man sie nicht erwartet. Konnte mit indiziertem Pixelformat nichts anfangen.
 
Ist ein Hinweis darauf wie die Bildformate mit wenigen Farben (<=8 Bit) arbeiten, da gibst eine Tabelle in denen die echten Farbwerte stehen, die dann selber 24 Bit haben können. Man kann also z.B. auch 256 Rot-Töne verwenden. Man verweist beim Pixel selber nur auf den Index in der Farbtabelle.

Und wer mal versucht hat Final Fantasy VII am PC zu spielen weiß das 8 Bit Texturen problematisch sind ;-)


PS: scheinbar hatte XNA das selbstständig konvertiert.
 
Zurück
Oben