Elikkä, jostain syystä en saa näkymään tuossa backgroundissa määrittämääni kuvaa, vaikka kääntäjä ei herjaa siitä kohdasta koodia mitään. Kuva on samassa kansiossa kuin Plane-objektin kuva, joka piirretään ruudulle ihan oikein.
Tässä on Pääohjelman koodia.
private Image background = null;
protected override void OnPaint(PaintEventArgs e)
{
//Varmistetaan että laite on olemassa
if (device == null)
return;
//Tyhjennetään ruutu sinisellä värillä
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.Blue, 1.0f, 0);
//Aloitetaan ruudun piirto
device.BeginScene();
SetupCamera();
background.Sprite.Begin(SpriteFlags.None);
background.Draw(new Point(0, 0), new Rectangle(0, 0, this.Width, this.Height));
background.Sprite.End();
device.EndScene();
device.Present();
//Kerrotaan että ikkuna pitää piirtää mahdollisimman nopeasti uudestaan
this.Invalidate();
}private bool CreateObjects()
{
//Luodaan sovelluksen fontti
background = new Image();
if (!background.CreateImage(device, @"..\..\Data\sky.jpg"))
return false;
return true;
}Tässä on Image.cs koodia.
public Sprite Sprite { get{ return sprite; } }
public Image(){ }
public bool CreateImage( Device device, string filename )
{
//Tarkastetaan onko saatu D3D laite kelvollinen
if ( device == null )
return false;
//Ladataan kuva tiedostosta käyttäen Direct3D nimiavaruuden tarjoamaa TextureLoader luokkaa
imageTexture = TextureLoader.FromFile( device, filename );
//Luodaan uusi Sprite
sprite = new Sprite( device );
return true;
}
public void Draw( Point position, Rectangle destRect )
{
sprite.Draw2D( imageTexture, Rectangle.Empty, destRect, position, Color.White );
}Aihe on jo aika vanha, joten et voi enää vastata siihen.