Benutzer mit den meisten Antworten
Elemente zoomen nicht bei Windows resize

Frage
-
Hallo
Die Darstellung ist korrekt bei Grid Height/Width 150. Bei Windows resize, bleiben Rechtecke/Ellipse gleich. Was muss man definieren?
<UserControl x:Class="AxUserControl.AnalogClockControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="150" d:DesignWidth="150" Name="AnalogClockControlDesign" Background="Transparent" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Grid x:Name="LayoutRoot" Background="Transparent" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Grid.RowDefinitions> <RowDefinition Height="*" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Image Name="ClockBackground" Source="/AxUserControl;component/Properties/ClockBgr.gif" /> <Image Name="Logo" Width="30" Source="/AxUserControl;component/Properties/Logo.png" Margin="61,101,59,24" /> <Rectangle Name="SecondHand" Width="3" Height="48" RenderTransformOrigin="0.5,1" Fill="#FFCB4141" Margin="74,0,73,74" VerticalAlignment="Bottom" Panel.ZIndex="30"> <Rectangle.RenderTransform> <RotateTransform x:Name="SecondRotate" Angle="0"/> </Rectangle.RenderTransform> </Rectangle> <Rectangle Name="MinuteHand" Width="5" Height="43" RenderTransformOrigin="0.5,1" Fill="#FF3A8FBE" Margin="73,0,72,74" VerticalAlignment="Bottom" Panel.ZIndex="20"> <Rectangle.RenderTransform> <RotateTransform x:Name="MinuteRotate" Angle="0"/> </Rectangle.RenderTransform> </Rectangle> <Rectangle Name="HourHand" Width="5" Height="28" RenderTransformOrigin="0.5,1" Fill="#FF3A8FBE" Margin="73,0,72,74" VerticalAlignment="Bottom" Panel.ZIndex="10"> <Rectangle.RenderTransform> <RotateTransform x:Name="HourRotate" Angle="0"/> </Rectangle.RenderTransform> </Rectangle> <Ellipse Height="5" HorizontalAlignment="Left" Margin="73,74,0,0" Name="ClockCenter" Stroke="DarkGray" VerticalAlignment="Top" Width="5" Fill="DimGray" Panel.ZIndex="40" /> </Grid> </UserControl>
- Bearbeitet JanM2 Samstag, 17. Januar 2015 21:19
Antworten
-
Du kannst die höhegröße unter umständen in relativer Größe angeben. So kannst du z.B. die Werte mit x* bezeichnen (50* oder 120*), was dann in relation zu den anderen relativen Größenangaben steht.
Oder du fängst das Resized-Event ab und änderst die Größe des Elemente manuell.
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 21. Januar 2015 11:05
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 29. Januar 2015 08:54
-
Hallo,
wie Thomas schon schreibt, brauchst du relative Größenangaben.
Das Resized-Event abzufangen ist sicherlich eine Möglichkeit, aber untypisch für WPF.Hier könntest du eher mit Spalten- und Zeilen im Grid oder mit einer Skalierungstransformation arbeiten. Wichtig ist, dass die absoluten Angaben von Width- und Height weg kommen. Auch das Margin darf dann nicht mehr fest gesetzt werden.
Für die Lösung mit dem Grid musst du einfach nur mehr Column- und RowDefinitions hinzufügen und dann die angefügten Eigenschaften passend zuweisen. Die Größenangaben der Zeilen- und Spalten sind relativ zu einander, wenn du ein * dahinter setzt.
Die ScaleTransformation könntest du per Konverter an die Größe des UserControls binden.Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 21. Januar 2015 11:05
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 29. Januar 2015 08:53
Alle Antworten
-
Du kannst die höhegröße unter umständen in relativer Größe angeben. So kannst du z.B. die Werte mit x* bezeichnen (50* oder 120*), was dann in relation zu den anderen relativen Größenangaben steht.
Oder du fängst das Resized-Event ab und änderst die Größe des Elemente manuell.
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 21. Januar 2015 11:05
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 29. Januar 2015 08:54
-
Hallo,
wie Thomas schon schreibt, brauchst du relative Größenangaben.
Das Resized-Event abzufangen ist sicherlich eine Möglichkeit, aber untypisch für WPF.Hier könntest du eher mit Spalten- und Zeilen im Grid oder mit einer Skalierungstransformation arbeiten. Wichtig ist, dass die absoluten Angaben von Width- und Height weg kommen. Auch das Margin darf dann nicht mehr fest gesetzt werden.
Für die Lösung mit dem Grid musst du einfach nur mehr Column- und RowDefinitions hinzufügen und dann die angefügten Eigenschaften passend zuweisen. Die Größenangaben der Zeilen- und Spalten sind relativ zu einander, wenn du ein * dahinter setzt.
Die ScaleTransformation könntest du per Konverter an die Größe des UserControls binden.Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 21. Januar 2015 11:05
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Donnerstag, 29. Januar 2015 08:53
-
Hallo JanM2,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben. Solltest Du noch Rückfragen dazu haben, gib bitte Bescheid.
Gruß,
DimitarBitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.