Laden...

WPF Controls in WinForms: Bildausschnitt richtig darstellen

Erstellt von Froggie vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.170 Views
F
Froggie Themenstarter:in
323 Beiträge seit 2007
vor 8 Jahren
WPF Controls in WinForms: Bildausschnitt richtig darstellen

Hallo!

Ich wusste nicht genau ob es hier oder in den Bereich Grafik gehört.
Es soll ein (Winforms-)Programm entstehen welches 2 WPF-Controls hostet (dies ist kein Problem). In dem einen Control wird ein Bild (korrektes Seitenverhältnis, zentriert) angezeigt. Dieses Control kann vom Benutzer in der Größe geändert werden. Auch dies habe ich bereits geschafft.
Auf diesem Bild (nur auf dem Bild) soll man ein Rechteck (feste Größe) verschieben können. Das grundsätzliche Verschieben eines Rectangle schaffe ich auch. Nur die Begrenzung auf das Bild schaffe ich nicht.
Alles was unterhalb des Rechtecks sichtbar ist, soll auf einem 2ten Control (auf einem anderen Monitor) in groß (skaliert) angezeigt werden. Auch dieses schaffe ich nicht.

Zur besseren Anschauung habe ich ein Bild zusammengebastelt (siehe Anhang).

Habt Ihr mit soetwas Erfahrung oder Beispiele gefunden?
Ich kann zwar gut suchen, aber nicht wenn ich nicht weiß wonach ich suchen muss 🙂
Beispiele oder Links zu Tutorials oder auch Stichwörter sind gerne genommen.

Mein Quellcode zum anzeigen des Bildes (erstes Control):
Ich bin mir nicht sicher was besser ist, ein Rectangle mit ImageBrush in einem Grid oder ein Image auf einem Canvas.

Das UserControl liegt in einem Dockpanel.


<Grid Background="AliceBlue">

        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Canvas x:Name="canvas"
                Grid.Row="0"
                Grid.Column="0"
                Background="Beige">
            <Image Height="{Binding ElementName=canvas, Path=ActualHeight}"
                   Width="{Binding ElementName=canvas, Path=ActualWidth}"
                   Source="{Binding ImageSource}"
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"
                   Stretch="Uniform" />
            <!--<Rectangle Height="{Binding ElementName=canvas, Path=ActualHeight}"
                       Width="{Binding ElementName=canvas, Path=ActualWidth}">
                <Rectangle.Fill>
                    <ImageBrush ImageSource="{Binding ImageSource}"
                                Stretch="Uniform"
                                AlignmentX="Center"
                                AlignmentY="Center"
                                presentation:Freeze="True" />
                </Rectangle.Fill>
            </Rectangle>-->
        </Canvas>

    </Grid>

Vielen Dank im Voraus!