Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
HONZ4
Člen
Avatar
HONZ4:17.11.2016 18:47

Ahoj. Učím se používat WPF.
Chci "zoomovat" formulář, který ve WF vypadá jako na přiloženém obrázku. Chci aby se při změně velikosti zachoval poměr pozic prvků na formuláři a přirozeně se měnila i velikost písma. Zkrátka taková lupa.

Já jsem to zkoušel různými způsoby, ale nedaří se mi to.

Moc by mi pomohlo, kdyby mi někdo vytvořil kompletní formulář jako je na obrázku v XAMLu, abych z něj pochopil jak na to.

 
Odpovědět
17.11.2016 18:47
Avatar
Odpovídá na HONZ4
Neaktivní uživatel:17.11.2016 19:55

Hoď jsem obrázek před a po zvětšení. Nevím, jak přesně to zvětšování myslíš.

Nahoru Odpovědět
17.11.2016 19:55
Neaktivní uživatelský účet
Avatar
HONZ4
Člen
Avatar
Odpovídá na Neaktivní uživatel
HONZ4:17.11.2016 20:43

přibližně takto:

 
Nahoru Odpovědět
17.11.2016 20:43
Avatar
Odpovídá na HONZ4
Neaktivní uživatel:17.11.2016 20:49

Zkus LayoutTransform: Všechny ty kontrolky budeš mít v nějakém Gridu/DockPanelu. Na tento top panel aplikuj LayoutTransform se zvětšením.

Nahoru Odpovědět
17.11.2016 20:49
Neaktivní uživatelský účet
Avatar
HONZ4
Člen
Avatar
Odpovídá na Neaktivní uživatel
HONZ4:17.11.2016 21:06

já právě nevím jak na ten rozestup mezi kontrolkami + jak s písmem.
Já už jsem na netu našel několik ukázek, ale většinou na nějakém tom panelu řazeno horizontálně/ver­tikálně, ale to se mě nehodí, já potřebuji mít kontrolky (ve výsledku jich tam bude mnohem víc) umístěny určitým způsobem a toto rozložení zachovat (z důvodu logiky aplikace). Takže by se na to hodil spíš nějaký ten grid, ale u něj nevím jak měnit rozestup na základě zvětšení.

ps.: tu horizontální mezeru mezi pictureboxem a textboxy jsem v náhledu trochu pokazil. Jak ta se bude chovat není důležité, ale raději když bude pořád stejná

 
Nahoru Odpovědět
17.11.2016 21:06
Avatar
HONZ4
Člen
Avatar
HONZ4:17.11.2016 21:14

sakra ten čas na editaci příspěvku je tu k ničemu!

ve skutečnosti by se asi mezery (rozestup) sousedních kontrolek měnit neměly. Zvětšují se pouze kontrolky, jejich písmo + panel na kterém leží a velikost písma spodního listboxu.

 
Nahoru Odpovědět
17.11.2016 21:14
Avatar
HONZ4
Člen
Avatar
HONZ4:17.11.2016 21:41

tady ten borec to má jak bych to chtěl. Mám na mysli tento náhled.
Ale zdroják tam má jen k té jednoduché aplikaci (tak to nechci) a já nevím jak to použít pro můj případ.

 
Nahoru Odpovědět
17.11.2016 21:41
Avatar
Odpovídá na HONZ4
Neaktivní uživatel:17.11.2016 22:04

Tady je primitivní XAML s jedním Buttonem - je to řešené přes Binding:

<Window x:Class="Transform.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Transform"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">

    <Window.Resources>
        <ScaleTransform x:Key="scale" ScaleX="{Binding ElementName=X, Path=Value}" ScaleY="{Binding ElementName=Y, Path=Value}">

        </ScaleTransform>
    </Window.Resources>

    <StackPanel>
        <Slider Name="X" Minimum="0.1" Maximum="3">

        </Slider>
        <Slider Name="Y" Minimum="0.1" Maximum="3">

        </Slider>


        <Button Width="100" Height="40" LayoutTransform="{StaticResource scale}">Button
        </Button>
    </StackPanel>
</Window>
Nahoru Odpovědět
17.11.2016 22:04
Neaktivní uživatelský účet
Avatar
HONZ4
Člen
Avatar
Odpovídá na Neaktivní uživatel
HONZ4:17.11.2016 22:21

Díky moc za jednoduchost.
Mohl bych poprosit o doplnění ještě jednoho buttonu vedle toho stávajícího? Ať vím jak vyřešit rozestup kontrolek.

 
Nahoru Odpovědět
17.11.2016 22:21
Avatar
Odpovídá na HONZ4
Neaktivní uživatel:17.11.2016 22:49

Prostě ho tam přidáš (a nastavíš mu nějaký pevný Margin, aby měly mezi sebou nějakou mezeru). Transformuješ pouze Button, mezery zůstanou stejné.

Nahoru Odpovědět
17.11.2016 22:49
Neaktivní uživatelský účet
Avatar
HONZ4
Člen
Avatar
Odpovídá na Neaktivní uživatel
HONZ4:17.11.2016 22:59

Jasně chápu, ale ještě nevím jak to skládat za a pod sebe. Do StackPanelu se právě dají umístit kontrolky buď horizontálně nebo vertikálně za sebe.

 
Nahoru Odpovědět
17.11.2016 22:59
Avatar
Odpovídá na HONZ4
Neaktivní uživatel:17.11.2016 23:09

Aha, a není divné snažit se implementovat zvětšování aplikace a přitom neznat elementární WPF věci, jako Grid, DockPanel, a StackPanel? Fóra jsou od toho, aby ti na nich poradili s kombinovanými nebo komplexními problémy. Nechce se mi sem přepisovat něco, co je v každém WPF tutoriálu na Internetu.

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition ></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Slider Grid.ColumnSpan="2" Name="X" Minimum="0.1" Maximum="3">

        </Slider>
        <Slider Grid.ColumnSpan="2" Grid.Row="1" Name="Y" Minimum="0.1" Maximum="3">

        </Slider>


        <Button Grid.Row="2" Margin="4" Width="100" Height="40" LayoutTransform="{StaticResource scale}">Button
        </Button>
        <Button Margin="4" Grid.Column="1" Grid.Row="2" Width="100" Height="40" LayoutTransform="{StaticResource scale}">Button
        </Button>
    </Grid>
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
17.11.2016 23:09
Neaktivní uživatelský účet
Avatar
Odpovídá na HONZ4
Michal Štěpánek:17.11.2016 23:10

A co přesně nechápeš? Když StackPanelu nastavíš

orientation="Horizontal"

Budou se kontrolky řadit vedle sebe, jinak je implicitně nastaveno řazení pod sebe. StackPanelů si můžeš dát kolik chceš, pokud to chceš mít "tabulkově" souměrně, použij Grid. Do jednotlivých buněk můžeš zase dávat stackpanely, nebo jiné kontejnery...

Nahoru Odpovědět
17.11.2016 23:10
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
HONZ4
Člen
Avatar
Odpovídá na Michal Štěpánek
HONZ4:17.11.2016 23:23

no právě to sázet do sebe hromadu panelů mě přišlo, že s toho bude hrozná maštal :)

 
Nahoru Odpovědět
17.11.2016 23:23
Avatar
HONZ4
Člen
Avatar
Odpovídá na Neaktivní uživatel
HONZ4:17.11.2016 23:27

tohle je aplikace první wpf co chci dělat, právě proto, že potřebuji předělat jednu WF kvůli zoomování. Tak se rovnou zajímám i o pokročilejší metody. Každopádně díky moc za pomoc. Prozatím vím, vše co jsem potřeboval.

 
Nahoru Odpovědět
17.11.2016 23:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.