Heim > Backend-Entwicklung > C++ > Wie schwenke und zoome ich Bilder mit Überlagerungen in WPF mithilfe von ViewBox, ImageBrush und ScrollViewer?

Wie schwenke und zoome ich Bilder mit Überlagerungen in WPF mithilfe von ViewBox, ImageBrush und ScrollViewer?

Mary-Kate Olsen
Freigeben: 2025-01-18 13:22:10
Original
227 Leute haben es durchsucht

How to Pan and Zoom Images with Overlays in WPF using ViewBox, ImageBrush, and ScrollViewer?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage