我最近學會了如何使用'TransformedBitmap'和'RotateTransformed'類來旋轉BitmapImage。現在我可以對我的圖像執行順時針旋轉。但是,我如何翻轉圖像?我無法找到類來執行BitmapImage的水平和垂直翻轉。請幫我弄清楚如何做到這一點。例如,如果我的圖像是一個看起來像'd'的圖形,那麼垂直翻轉會導致類似'q'的東西,而水平翻轉會導致類似'b'的東西。如何翻轉圖像wpf
回答
Use a ScaleTransform其中ScaleX爲-1表示水平,ScaleY表示-1表示垂直翻轉,適用於圖像的RenderTransform
屬性。在圖像上使用RenderTransformOrigin="0.5,0.5"
確保你的形象被圍繞其中心翻轉,這樣你就不必應用附加TranslateTransform將其移動到的地方:
<Image Source="a.jpg" Padding="5" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<ScaleTransform ScaleX="-1"/>
</Image.RenderTransform>
</Image>
的水平翻轉和
<Image Source="a.jpg" Padding="5" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</Image.RenderTransform>
</Image>
爲垂直。
如果你想這樣做的代碼隱藏在C#中應該是這個樣子:
img.RenderTransformOrigin = new Point(0.5,0.5);
ScaleTransform flipTrans = new ScaleTransform();
flipTrans.ScaleX = -1;
//flipTrans.ScaleY = -1;
img.RenderTransform = flipTrans;
您可以使用ScaleTransform負ScaleX
/ScaleY
:
<TextBlock Text="P">
<TextBlock.RenderTransform>
<ScaleTransform ScaleY="-1" ScaleX="-1" />
</TextBlock.RenderTransform>
</TextBlock>
舉你的翻轉多一點「深度」,看起來更像是一個真正的翻轉,你可能想用一個更小的尺度變換做一個歪斜變換。
你會想歪斜對象約20度,使它看起來好像它在3D中翻轉。這是一個可憐的人3D翻轉。你可以在WPF中完成一個真正的3D翻轉,但需要更多的工作。
這會爲您提供看起來更乾淨的動畫,然後您可以在兩個不同的面板上切換可見性,爲您的元素提供正面和背面的印象。
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyControl" Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
<SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:00.09" Value="0.3" />
<SplineDoubleKeyFrame KeyTime="00:00:00.12" Value="0.6" />
<SplineDoubleKeyFrame KeyTime="00:00:00.15" Value="0.8" />
<SplineDoubleKeyFrame KeyTime="00:00:00.18" Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyControl" Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
<SplineDoubleKeyFrame KeyTime="00:00:00.0" Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:00.09" Value="0.9" />
<SplineDoubleKeyFrame KeyTime="00:00:00.18" Value="1" />
<SplineDoubleKeyFrame KeyTime="00:00:00.2" Value="1" />
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyControl" Storyboard.TargetProperty="(FrameworkElement.RenderTransform).(TransformGroup.Children)[1].(SkewTransform.AngleY)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0" />
<SplineDoubleKeyFrame KeyTime="00:00:00.06" Value="-10" />
<SplineDoubleKeyFrame KeyTime="00:00:00.09" Value="-20" />
<SplineDoubleKeyFrame KeyTime="00:00:00.1" Value="20" />
<SplineDoubleKeyFrame KeyTime="00:00:00.18" Value="0" />
</DoubleAnimationUsingKeyFrames>
有趣的3D翻轉的用戶控件:http://flipcontrol.codeplex.com/releases/view/22358
在你的情況,你將不得不在兩側顯示相同的圖像。
翻轉容器控制檢查http://clipflair.codeplex.com,在Client \ ZUI文件夾下的FlipPanel項目 – 2015-12-04 12:16:02
水平(僅)翻轉btw的快速技巧是將FlowDirection屬性設置爲FlowDirection.RightToLeft。如果該組件是一個容器,雖然,它的一些孩子可能會有不同的解讀財產(定製邏輯)
這只是救了我,因爲它翻轉圖像而不移動它。 – 2016-01-27 11:20:24
順便說一句,如果你嘗試使用ScaleTransform和-1進行x-scale,那麼你可能錯過了RenderTransformOrigin =「0.5,0.5」。然而,使用FlowDirection讀取代碼(或放入XAML)確實更直接,而不是轉換方法 – 2016-01-28 18:34:20
<Image x:Name="SampleImage" Margin="0" RenderTransformOrigin="0.5,0.5" >
<Image.LayoutTransform>
<TransformGroup>
<ScaleTransform ScaleY="1" ScaleX="-1"/>
<SkewTransform AngleY="0" AngleX="0"/>
<RotateTransform Angle="0"/>
<TranslateTransform/>
</TransformGroup>
</Image.LayoutTransform>
</Image>
像這樣創建的圖像分量。當它的源被設置時,圖像將從左到右翻轉。
- 1. 圖像在WPF中翻轉
- 2. 如何翻轉Android圖像
- 3. 翻轉圖像
- 4. 翻轉圖像
- 5. 翻轉圖像
- 6. 翻轉圖像
- 7. 如何旋轉圖像wpf
- 8. javascript - 翻轉圖像
- 9. 如何使用PHP「翻轉」圖像?
- 10. 如何製作CSS翻轉圖像? (sprite)
- 11. 如何翻轉jQuery的圖像?
- 12. 如何添加圖像翻轉到Javascript
- 13. 如何在OpenGL中翻轉圖像?
- 14. 翻轉多個圖像javascript
- 15. 響應翻轉圖像
- 16. CSS圖像翻轉文本
- 17. AS3 Flash翻轉圖像
- 18. 使用Graphics2D翻轉圖像
- 19. 水平翻轉圖像
- 20. Jquery的翻轉圖像
- 21. 翻轉圖像與按鈕
- 22. 在kineticJS中翻轉圖像?
- 23. 垂直翻轉圖像
- 24. 翻轉c中的圖像
- 25. Android翻轉圖像動畫
- 26. 在jQuery中翻轉圖像
- 27. jquery翻轉多個圖像
- 28. 翻轉時變暗圖像
- 29. Magento圖像翻轉效果
- 30. WPF圖像轉換
:)你的速度更快。 +1。 – Anvaka 2010-06-09 11:22:29
我怎麼能通過C# – Shashank 2010-06-09 11:28:20
thnks工作 – Shashank 2010-06-09 11:48:22