Hej, Hej Mattias, nog är det väl så att när du skalar din sprite så måste du kompensera för att centrumpunkten också kommer att förflyttas, det är det som gör att spriten förändrar sin position. Spontant, utan att titta på koden kan jag med ganska stor säkerhet säga att det är så här: Enklast är väl att lägga alla vertices symmetriskt kring origo, dvs. från (-0.5, -0.5) till (0.5, 0.5) eller nåt sånt och sedan skala. Annars måste du kompensera med en translation för varje skalning.Transform med 2D.
Nu har jag fått lite problem med DirectX transform funktionerna igen :/.
När jag skalar en bild förstoras bilden och förflyttas en viss längd i samma axel jag skalar den i. Jag vill självklart inte att den skall förflyttas när jag skalar den, Skalningen fungerar perfekt när jag arbetar med 3D.
Någon som har en aning om hur jag skall få rätt på skalningen när jag ritar upp objekt i 2D?
public void FillPos(int x, int y) // Sets the sprites position
{
Pos.X = x;
Pos.Y = y;
}
public void Draw(Sprite D3DSprite) // Draws my sprite
{
Rectangle rect = (Rectangle)Desc[aFrame];
Center.X = rect.Width / 2;
Center.Y = rect.Height / 2;
Matrix mm = New Matrix();
mm = Matrix.Scaling(1.0F,1.5F,0.0F);
D3DSprite.Transform = mm; //Scale Scale :)
D3DSprite.Draw(tex, rect, Center, Pos, Color.FromArgb(255,255,255,255));
}
Sv: Transform med 2D.
Sv: Transform med 2D.
Du placerar en bild mitt på någon slags yta. Sen gör du en skalning på den ytan, istället för på liksom själva bilden.
Du får komma på hur du bara skalar bilden.
EDIT: Hoppsan, där var jag lite sen.Sv: Transform med 2D.
/Peter