如何在DirectX设备中缩放图像

本文关键字:缩放 图像 DirectX | 更新日期: 2023-09-27 17:50:16


我有一个控件(picturebox(,我想在其中借助DirectX绘制2D图像。我有一个显示器和精灵,它工作得很好。

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

问题是纹理大小比picturebox大得多,我只想找到适合它的方法
我试着设置设备。转换属性但没有帮助:

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

这里是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;  
}

感谢您提供的任何解决方案帮助。

如何在DirectX设备中缩放图像

解决方案只是使用这个:

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

而不是手工制作的方法。