Recentemente ho imparato a ruotare un BitmapImage utilizzando le classi 'TransformedBitmap' e 'RotateTransformed'. Ora sono in grado di eseguire rotazioni in senso orario sulle mie immagini. Ma come FLIP un'immagine? Non riesco a trovare la classe (es) per eseguire lanci orizzontali e verticali di un BitmapImage. Per favore aiutami a capire come si fa. Per esempio, se la mia immagine fosse un disegno che assomiglia a una "d", allora un capovolgimento verticale risulterebbe in qualcosa di simile a una "q", e un capovolgimento orizzontale risulterebbe in qualcosa come una "b".Come capovolgere l'immagine nel wpf
risposta
Use a ScaleTransform con una ScalaX di -1 per orizzontale e ScalaY di -1 per il capovolgimento verticale, applicato alla proprietà RenderTransform
dell'immagine. Utilizzando RenderTransformOrigin="0.5,0.5"
sull'immagine assicura la vostra immagine viene capovolta attorno al suo centro, in modo da non dovrà applicare un ulteriore TranslateTransform per spostare in posizione:
<Image Source="a.jpg" Padding="5" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<ScaleTransform ScaleX="-1"/>
</Image.RenderTransform>
</Image>
per flipping orizzontale e
<Image Source="a.jpg" Padding="5" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<ScaleTransform ScaleY="-1"/>
</Image.RenderTransform>
</Image>
per verticale.
Se si vuole fare in code-behind, in C# che dovrebbe essere simile a questa:
img.RenderTransformOrigin = new Point(0.5,0.5);
ScaleTransform flipTrans = new ScaleTransform();
flipTrans.ScaleX = -1;
//flipTrans.ScaleY = -1;
img.RenderTransform = flipTrans;
È possibile utilizzare ScaleTransform con negativo ScaleX
/ScaleY
:
<TextBlock Text="P">
<TextBlock.RenderTransform>
<ScaleTransform ScaleY="-1" ScaleX="-1" />
</TextBlock.RenderTransform>
</TextBlock>
Per dare la tua vibrazione un po 'più "profonda" in modo che sembri un vero capovolgimento che probabilmente vuoi fare una trasformazione di skew con una trasformazione di scala più piccola.
Si dovrebbe inclinare l'oggetto di circa 20 gradi per farlo apparire come se stesse girando in 3D. Questo è un capolino in 3D. Puoi realizzare un vero 3D flip in WPF, ma questo richiede un po 'più di lavoro.
Questo ti darà l'animazione che sembra più pulita, quindi puoi attivare la visibilità su due pannelli diversi per dare l'impressione di un fronte e un retro del tuo elemento.
<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>
Interessante 3d UserControl flippable: http://flipcontrol.codeplex.com/releases/view/22358
Nel tuo caso si dovrà visualizzare su entrambi i lati della stessa immagine.
per capovolgere il controllo del contenitore check out http://clipflair.codeplex.com, nella cartella Client \ ZUI il progetto FlipPanel –
Un trucco rapido per il ribaltamento orizzontale (solo) btw è impostare la proprietà FlowDirection su FlowDirection.RightToLeft. Se il componente è un contenitore, alcuni di essi potrebbero interpretare la proprietà in modo diverso (logica personalizzata)
Questo mi ha appena salvato, poiché capovolge l'immagine senza spostarla. –
btw, probabilmente ti mancava RenderTransformOrigin = "0.5,0.5" se si muoveva se provassi il ScaleTransform con -1 per x-scale.Tuttavia, è molto più semplice leggere nel codice (o inserire in XAML) anche con FlowDirection, piuttosto che l'approccio Transforms –
<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>
Creare un componente immagine come questo. E quando la sua sorgente è impostata, l'immagine girerà da sinistra a destra.
- 1. come capovolgere l'icona glyphicon
- 2. Come capovolgere un singolo UIView (senza capovolgere la vista genitore)
- 3. Come capovolgere le coordinate quando si disegna nel contesto?
- 4. Come posso capovolgere un UIImageView?
- 5. Capovolgere una tela Android
- 6. Capovolgere vertex shader (GLES)
- 7. Come capovolgere UIImmagine in orizzontale con Swift?
- 8. Capovolgere uno sprite su tela
- 9. Mipmapping nel wpf
- 10. focus autocompletebox nel wpf
- 11. WPF FindAncestor nel legame
- 12. Three.js: è possibile capovolgere uno sprite?
- 13. Separatore verticale nel nastro WPF
- 14. WPF Altezza automatica nel codice
- 15. Ricaricamento di un'immagine nel wpf
- 16. Capovolgere una bitmap nella guida di Android?
- 17. Come capovolgere le linee di una selezione visiva in vim?
- 18. Come capovolgere un bit specifico in un byte in C?
- 19. Come capovolgere un JFrame e i suoi figli?
- 20. Cosa c'è di sbagliato nel modo in cui ho provato a capovolgere (speculare) una UIImmagine?
- 21. Set RTF testo nel controllo WPF RichTextBox
- 22. Sposta una finestra senza bordi nel wpf
- 23. Associazione dinamica nel modello DataGridCell WPF
- 24. WPF - Gestire un ApplicationCommand nel ViewModel
- 25. Come posso importare windows.media.capture nel mio progetto WPF?
- 26. Come richiamare MessageBox.Show() nel mezzo della mia applicazione WPF?
- 27. WPF - Come materializzare programmaticamente l'oggetto nel contenuto visivo?
- 28. Come impostare l'icona della finestra nel codice dietro in wpf?
- 29. Come convertire un progetto Winforms nel progetto wpf
- 30. Come impostare il margine su un TextBoxView interno nel wpf
:) Sei stato più veloce. +1. – Anvaka
Come posso farlo tramite C# – Shashank
con il suo funzionamento – Shashank