Laden...

Canvas verschiebt sich immer

Erstellt von Coooder vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.103 Views
C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren
Canvas verschiebt sich immer

hi,

ich habe ein Canvas in dem ein paar rechtecke und 3 weitere canwas mit inhalt sind
und immer wenn ich das programm dann compiliere vershiebt sich aber dieser Canvas im program nach unten o.O

an was liegt es? ich hab schon rumprobiert aber ich finde die richtigen einstellungen nich 😕

        <Canvas Grid.Row="1" Height="33" HorizontalAlignment="Left" Margin="11,166,0,0" Name="canvas7" VerticalAlignment="Top" Width="606">
            
            <Rectangle Height="30" Name="rectangle4" Stroke="Black" Width="606" Fill="Black" RadiusX="20" RadiusY="20" Canvas.Left="0" Canvas.Bottom="0" />
            <Rectangle Fill="Black" Height="19" Name="rectangle5" Stroke="Black" Width="606" Canvas.Left="0" Canvas.Bottom="14" />
            <Canvas Height="30" Name="canvas3" Width="30" MouseLeftButtonDown="MediaPasueEvent" Canvas.Left="529" Canvas.Top="2">
                <Rectangle Name="rectangle6" Stroke="Black" Fill="DarkOrange" Opacity="0.75" StrokeThickness="1" Canvas.Left="5" Canvas.Top="0" Height="30" Width="6" />
                <Rectangle Canvas.Left="19" Canvas.Top="0" Fill="DarkOrange" Height="30" Name="rectangle7" Opacity="0.75" Stroke="Black" StrokeThickness="1" Width="6" />
            </Canvas>
            <Canvas Height="30" Name="canvas5" Width="30" MouseLeftButtonDown="MediaStopEvent" Canvas.Left="493" Canvas.Top="2">
                <Rectangle Canvas.Left="2" Canvas.Top="2" Fill="DarkOrange" Height="26" Name="rectangle8" Opacity="0.75" Stroke="Black" StrokeThickness="1" Width="26" />
            </Canvas>
            <Canvas Height="30" Name="canvas4" Width="30" MouseLeftButtonDown="MediaPlayEvent" Canvas.Left="565" Canvas.Top="2">
                <Polygon Points="0,0 0,30  30,15" Stroke="Black" StrokeThickness="1" Fill="DarkOrange" Width="30" Height="30" Opacity="0.75" Canvas.Left="0" Canvas.Top="0" />
            </Canvas>
        </Canvas>
3.430 Beiträge seit 2007
vor 12 Jahren

Hallo,

was meinst du mit nach unten verschieben? bzw. wo verschiebt es sich nach unten?
Im Designer oder wenn du es Ausführst?

Und was hat das mit dem kompilieren zu tun?

Der Code sieht so auf den ersten Blick normal aus.

Gruß
Michael

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

ja, es vershiebt sich wenn man das programm ausführt, ... sry hätt deutlicher sagen sollen ^^
im designer is alles so wie ich es haben will nur wenn mans ausführt is es verschoben

3.430 Beiträge seit 2007
vor 12 Jahren

ah ok.
Sorry aber da kann ich dir immer noch nicht mehr zu sagen.

Der Code sieht soweit korrekt aus (auch wenn er nicht der schönste ist).
Gib den einzelnen Container einfach mal eine Hintergrundfarbe und guck dir dann an welcher sich falsch verschiebt.

In WPF sollte man normalerweise eigentlich nicht absolute Breite verwenden, da man da alles schön mit den LayoutContainern machen kann.

Gruß
Michael

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

naja es is der äußere container also der

<Canvas Grid.Row="1" Height="33" HorizontalAlignment="Left" Margin="11,166,0,0" Name="canvas7" VerticalAlignment="Top" Width="606">

alles was da drin is bleibt im verhältnis zum äuseren container an der richtigen stelle

3.430 Beiträge seit 2007
vor 12 Jahren

Dann wird sich Grid.Row 0 wohl mehr Platz einnehmen als im Designer.
Also das was in der ersten Zeile ist, ist wohl höher als im Designer.

Gruß
Michael

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

hmm ... joar scheint so ^^ ich hab die rows aus dem grid mal rausgelöscht jetzt gehts ^^
aber ich glaube das is nich ganz im sinne des erfinders 😕

3.430 Beiträge seit 2007
vor 12 Jahren

Jein, das Grid ist eigentlich der mächtigste LayoutContainer, man muss es nur richtig verwenden 😉

Du kannst bei den RowDefinitions die Höhe der Zeile angeben.
Entweder du gibst einen fixen Wert (z.B. 200) oder du setzt es auf Auto (die Höhe der Zeile passt sich an den Content an). Die dritte Möglichkeit ist es den Stern () zu verwenden. D.h. damit füllt die Zeile den verbleibenden Platz aus. Indem du eine Zahl vor den Stern schreibst kannst du auch noch Gewichtungen vergeben (Zeile 1=1 und Zeile 2=3* => damit wäre Zeile2 immer 3 mal so hoch wie Zeile 1)

Siehe: GridLayout

Hoffe das dir das weiterhilft

Gruß
Michael

C
Coooder Themenstarter:in
180 Beiträge seit 2011
vor 12 Jahren

jo danke ^^

hab mir grad im galileo openbook alle LayoutContainer durchgelesen und bin zu dem entschluss gekommen die gesamte oberfläche noch mal neu zu machen ^^
ich hab für alles immer nur canvas genommen weil es mir am einfachsten erschien
aber ich werd das nochmal alles durchdenken und neu machen 😃