2014-11-06 4 views
0

я могу повернуть изображение по:Поворот и масштаб ImageBrush

RotateTransform aRotateTransform = new RotateTransform(); 
    aRotateTransform.CenterX = 0.5; 
    aRotateTransform.CenterY = 0.5; 
    tateTransform.Angle = rotationAngle; 

    ImageBrush bgbrush = new ImageBrush(); 
    bgbrush.RelativeTransform = aRotateTransform; 

    ScaleTransform s = new ScaleTransform(); 
    s.ScaleX = -1; // how to set without overriding the rotation? 
    ... 

Как можно масштабировать это в дополнение? Я пробовал использовать матрицы без успеха.

ответ

2

Вы можете использовать TransformGroup так:

TransformGroup tg = new Transformgroup(); 
tg.Children.Add(rotateTransform); 
tg.Children.Add(scaleTransform); 
bgbrush.RelativeTransform = tg; 
1

Вы можете использовать CompositeTransform, он сочетает в себе трансляцию, поворот и масштабирование в одной матрице.

1

Просто для полноты картины. Используя матричные преобразования, вы получите ожидаемый результат от этого:

var transform = Matrix.Identity; 
transform.RotateAt(rotationAngle, 0.5, 0.5); 
transform.Scale(-1, 1); 

bgbrush.RelativeTransform = new MatrixTransform(transform); 

Однако, я думаю, что на самом деле вы хотите сохранить изображение по центру, так что вы можете использовать ScaleAt вместо Scale:

var transform = Matrix.Identity; 
transform.RotateAt(rotationAngle, 0.5, 0.5); 
transform.ScaleAt(-1, 1, 0.5, 0.5); 

bgBrush.RelativeTransform = new MatrixTransform(transform); 
Смежные вопросы