Как масштабировать изображение на устройстве DirectX? - PullRequest
0 голосов
/ 16 апреля 2011


У меня есть элемент управления (picturebox), в котором я хочу нарисовать 2D-изображение с помощью 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);

Проблема в том, что размер текстуры намного больше, чем у Picturebox, и я просто хочу найти способ разместить ее там.
Я попытался установить свойство device.Transform, но это не такhelp:

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

Спасибо за любое решение ||помощь.

1 Ответ

0 голосов
/ 27 апреля 2011

Решение было просто использовать это:

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

вместо метода ручной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...