Так что мой вопрос довольно прост:WPF - Turn StackPanel 180 ° и остаться на том же месте
У меня есть StackPanel с двумя объектами: кнопка и прямоугольник (который заполняется с изображением, нажав на кнопку). Теперь, еще одна вещь, которая должна произойти, - это когда кнопка нажата, вся панель стека должна быть перевернута вверх дном, и она должна оставаться в одном месте.
Я попытался с RenderTransformOrigin-свойством, установленной на «0.5,0.5» , но у меня нет никакой удачи с этим .. либо StackPanel перемещен в другое место или оно исчезло (вне границ)
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<StackPanel Name="pnlFlip" RenderTransformOrigin="0.5,0.5">
<Button Content="Test" Margin="200,78,197,-78" Name="btnTest" Click="btnTest_Click" Height="30"/>
<Rectangle Margin="175,146,162,-239" Name="rectTest" Fill="Red" Height="127"/>
</StackPanel>
</Grid>
</Window>
код для моих кнопок, как это:
private int scale = 1;
private int angle = 180;
private void btnTest_Click(object sender, RoutedEventArgs e)
{
ImageBrush img = new ImageBrush();
img.ImageSource = new BitmapImage(new Uri("pack://application:,,,/WpfApplication1;component/Resources/Images/logo.jpg"));
rectTest.Fill = img;
//Trying a ScaleTranfsformObject
ScaleTransform st = new ScaleTransform();
if(scale == 1)
{
scale = -1;
st.ScaleY = scale;
}
else
{
scale = 1;
st.ScaleY = scale;
}
//Trying a RotateTransform Object
RotateTransform rt = new RotateTransform();
if(angle == 180)
{
rt.Angle = angle;
angle += 180;
}
else
{
rt.Angle = angle;
angle -= 180;
}
pnlFlip.RenderTransform = rt;
}
Так что я делаю неправильно/как я могу это исправить? (. Минус код для изображения в ваших ресурсах)
Скопируйте код в новый проект и он отлично работает. – vesan