Ich entwickle eine Bildverarbeitungsanwendung mit WPF und EmguCV 3.0. Mein Problem ist, dass das Element nicht korrekt auf dem Bildschirm positioniert ist. Ich habe gesehen, was das Padding ist, und es gibt alle Seiten als 0 zurück. Das ImageBox-Element von Emgu, das ich zum Anzeigen der Bilder verwende, ist in einem Windows Forms-Host-Steuerelement gekapselt. Ich habe zwei andere ImageBox-Elemente, die richtig angezeigt werden. Jedes der ImageBox-Elemente befindet sich innerhalb einer eigenen Registerkarte in einem TabControl. Beim Start legte ich die Breite und Höhe Eigenschaften aller ImageBoxen und ihrer Canvases.C# WPF-Elementposition nicht an der richtigen Stelle
Eine zusätzliche Sache zu beachten ist, dass die anderen zwei ImageBoxen auch aus ihren Grenzen überlaufen, aber nach dem Hin- und Herschalten zwischen den Registerkarten wieder in die Grenzen zurückgesetzt werden. Dies geschieht nur einmal.
Hier ist ein Link zu Screenshots, wie die Benutzeroberfläche aussieht. http://imgur.com/a/RwG17
Zusätzlich ist hier der XAML und C# Code für die ImageBoxen.
<TabItem x:Name="ImageTabControlHSV">
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="HSV" />
</StackPanel>
</TabItem.Header>
<Canvas x:Name="HSVImageCanvas">
<WindowsFormsHost>
<emui:ImageBox x:Name="HSVImageBox"/>
</WindowsFormsHost>
</Canvas>
</TabItem>
//Width and height properties are gotten from camera image.
HSVImageBox.Width = ratioWidth;
HSVImageBox.Height = ratioHeight;
HSVImageCanvas.Width = width;
HSVImageCanvas.Height = height;
HSVImageCanvas.MaxHeight = height;
HSVImageCanvas.MaxWidth = width;
Jede Hilfe oder Vorschläge würden sehr geschätzt werden.
UPDATE: Setzen Sie einen Zähler für wie oft die problematische ImageBox ausgewählt wurde und Canvas.SetTop() und Canvas.SetLeft() scheint eine Problemumgehung zu sein. Ich würde immer noch gerne wissen, warum die Leinwand ihre Position ändert.
ist es möglich, einen Gittercontainer anstelle einer Leinwand zu verwenden? – failedprogramming
Probieren Sie HorizontalAlignment und VerticalAlignment aus. '
@ alex10 Vielen Dank für den Vorschlag! Es schien jedoch nicht zu beheben. Der Beitrag wurde jedoch mit neuen Informationen aktualisiert. –