2011-04-16 4 views
0


J'ai un contrôle (picturebox), dans lequel je veux dessiner une image 2D avec l'aide de DirectX. J'ai un affichage et un sprite, et ça marche bien.Comment redimensionner une image dans un périphérique DirectX?

// Some code here... 
_device = new Device(0, DeviceType.Hardware, pictureBox1, 
      CreateFlags.SoftwareVertexProcessing, 
presentParams); 
_sprite = new Sprite(_device);  
// ... 
_sprite.Draw(texture, textureSize, _center, position, Color.White); 

Le problème est que la taille de la texture est beaucoup plus grande que picturebox, et je veux juste trouver le moyen de l'adapter là.
J'ai essayé de définir la propriété device.Transform mais il ne vous aide pas:

var transform = GetTransformationMatrix(textureSize.Width, textureSize.Height); 
_device.SetTransform(TransformType.Texture0, transform); 

Voici la méthode getTransform:

Matrix GetTransformationMatrix(float width, float height) 
{ 
    var scaleWidth = pictureBox1.Width /width ; 
    var scaleHeight = pictureBox1.Height/height; 
    var transform = new Matrix(); 
    transform.M11 = scaleWidth; 
    transform.M12 = 0; 
    transform.M21 = 0; 
    transform.M22 = scaleHeight; 
    return transform; 
} 

Merci pour toute solution || Aidez-moi.

Répondre

0

La solution était juste à utiliser:

var transformMatrix = Matrix.Scaling(scaleWidth, scaleHeight, 0.0F); 

au lieu de la méthode faite à la main.

Questions connexes