Bildschwenken und Zoomen in WPF
WPF bietet eine einfache Möglichkeit, ViewBox
, ImageBrush
und ScrollViewer
zu kombinieren, um einen Bildbetrachter zu erstellen, der Bildschwenk-, Zoom- und Überlagerungsfunktionen unterstützt. So geht's:
1. Verwenden Sie ViewBox zum Schwenken und Zoomen:
ViewBox
Mit einem Container können Sie die darin enthaltenen untergeordneten Elemente skalieren und positionieren. Platzieren Sie das Bild in einem ViewBox
und Sie können das Bild einfach schwenken und zoomen, indem Sie seine Eigenschaften Stretch
und Offset
anpassen.
2. Verwenden Sie ImageBrush, um Überlagerungen zu erstellen:
ImageBrush
ermöglicht es Ihnen, ein Bild in einem bestimmten Bereich zu zeichnen. Sie können eine Überlagerung erstellen, indem Sie ein ImageBrush
erstellen und es als Füllung für eine Form oder ein Steuerelement verwenden, das über dem Hauptbild platziert wird.
3. Verwenden Sie ScrollViewer, um das vollständige Bild anzuzeigen:
Wenn die Bildgröße die Viewer-Größe überschreitet, können Sie ScrollViewer
als übergeordnetes Element des Hauptbilds ViewBox
verwenden. Dadurch können Sie durch das gesamte Originalbild scrollen.
4. Schwenk- und Zoom-Implementierung:
Das folgende Beispiel zeigt, wie Sie mit ViewBox
, ImageBrush
und ScrollViewer
schwenken und zoomen:
MainWindow.xaml:
<code class="language-xml"><Window ...> <ScrollViewer> <Viewbox x:Name="PannableViewBox"> <Image Source="myImage.jpg"/> <ImageBrush Opacity="0.5" x:Name="OverlayImageBrush"/> </Viewbox> </ScrollViewer> </Window></code>
MainWindow.xaml.cs:
<code class="language-csharp">public partial class MainWindow : Window { private Point _start; private ScaleTransform _scaleTransform; private TranslateTransform _translateTransform; public MainWindow() { InitializeComponent(); _scaleTransform = new ScaleTransform(); _translateTransform = new TranslateTransform(); PannableViewBox.RenderTransform = new TransformGroup() { Children = { _scaleTransform, _translateTransform } }; } private void PannableViewBox_MouseWheel(object sender, MouseWheelEventArgs e) { if (Keyboard.IsKeyDown(Key.LeftCtrl)) { _scaleTransform.ScaleX += e.Delta > 0 ? 0.1 : -0.1; _scaleTransform.ScaleY += e.Delta > 0 ? 0.1 : -0.1; } } private void PannableViewBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { _start = e.GetPosition(PannableViewBox); PannableViewBox.CaptureMouse(); } private void PannableViewBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { PannableViewBox.ReleaseMouseCapture(); } private void PannableViewBox_MouseMove(object sender, MouseEventArgs e) { if (PannableViewBox.IsMouseCaptured) { var point = e.GetPosition(PannableViewBox); _translateTransform.X -= point.X - _start.X; _translateTransform.Y -= point.Y - _start.Y; _start = point; } } }</code>
Dieser Code zeigt, wie man mit ViewBox
einen schwenkbaren Bereich erstellt, wie man als Reaktion auf Mausradereignisse zoomt und wie man Mausereignisse beim Schwenken verarbeitet. Sie können diese Lösung weiter anpassen, um Overlays und andere Funktionen hinzuzufügen.
Das obige ist der detaillierte Inhalt vonWie schwenke und zoome ich Bilder mit Überlagerungen in WPF mithilfe von ViewBox, ImageBrush und ScrollViewer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!