Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Sorot dan Zum Imej dengan Tindanan dalam WPF menggunakan ViewBox, ImageBrush dan ScrollViewer?
Menyorot imej dan mengezum masuk WPF
WPF menyediakan cara mudah untuk menggabungkan ViewBox
, ImageBrush
dan ScrollViewer
untuk mencipta pemapar imej yang menyokong fungsi pan, zum dan tindanan imej. Begini cara melakukannya:
1 Gunakan ViewBox untuk menyorot dan zum:
ViewBox
Bekas membolehkan anda menskala dan meletakkan elemen kanak-kanak di dalamnya. Letakkan imej di dalam ViewBox
dan anda boleh menyorot dan mengezum imej dengan mudah dengan melaraskan sifat Stretch
dan Offset
nya.
2. Gunakan ImageBrush untuk membuat tindanan:
ImageBrush
membolehkan anda melukis imej ke kawasan tertentu. Anda boleh membuat tindanan dengan mencipta ImageBrush
dan menggunakannya sebagai pengisi untuk bentuk atau kawalan yang diletakkan di atas imej utama.
3. Gunakan ScrollViewer untuk memaparkan imej lengkap:
Jika saiz imej melebihi saiz pemapar, anda boleh menggunakan ScrollViewer
sebagai induk kepada ViewBox
utama. Ini membolehkan anda menatal keseluruhan imej asal.
4. Pelaksanaan sorot dan zum:
Contoh berikut menunjukkan cara menyorot dan mengezum menggunakan ViewBox
, ImageBrush
dan ScrollViewer
:
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>
Kod ini menunjukkan cara menggunakan ViewBox
untuk mencipta kawasan boleh pann, cara mengezum sebagai tindak balas kepada peristiwa roda tetikus dan cara mengendalikan acara tetikus untuk menyorot. Anda boleh menyesuaikan lagi penyelesaian ini untuk menambah tindanan dan ciri lain.
Atas ialah kandungan terperinci Bagaimana untuk Sorot dan Zum Imej dengan Tindanan dalam WPF menggunakan ViewBox, ImageBrush dan ScrollViewer?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!