Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# DirectX (Kuva ei näy)

Hoover [03.06.2006 22:43:43]

#

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 );
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta