17 messaggi dal 14 luglio 2016
Buonasera a tutti,

vorrei effettuare un test prima di iniziare un'applicazione vera e propria, il test che volevo effettuare è quello di creare un piccolo contenitore all'interno di una window con un margine di circa 20,20,20,20 con all'interno tre linee tra cui una verticale, una orizzontale ed un'altra verticale, in poche parole una U.
Questo contenitore mantenendo i margini impostati si dovrebbe ridimensionare in funzione della risoluzione del runtime, in poche parole le linee create non devono spostarsi ma solamente ridimensionarsi tipo Zoom.
Come accennato inizialmente è un test e vorrei capire come affrontare questa problematica.

Spero che qualcuno mi possa suggerire una soluzione al riguardo.
497 messaggi dal 08 febbraio 2009
Ciao.

Nel caso specifico, farei in questo modo:
- Una grid (contenitore esterno) coi 20 pixel di margine e 3 colonne (1 con i pixel di dimensione della linea verticale sinistra, una con pixel * per la linea centrale, 1 con i pixel di dimensione della linea verticale destra)
- All'interno della grid, disegnamo i 3 bordi per fare le tre linee che disegneranno la U

Il codice sarebbe questo:

    <Grid Margin="20">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2" />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="2" />
        </Grid.ColumnDefinitions>
        <Border Grid.Column="0"
                Margin="0" Padding="0"
                BorderThickness="0, 0, 2, 0"
                BorderBrush="Black"></Border>
        <Border Grid.Column="1" 
                Margin="0" Padding="0"
                BorderThickness="0, 0, 0, 2"
                BorderBrush="Black"></Border>
        <Border Grid.Column="2" 
                Margin="0" Padding="0"
                BorderThickness="2, 0, 0, 0"
                BorderBrush="Black"></Border>
    </Grid>


Questo esempio rappresenta più o meno la richiesta: una finestra con tre linee



Se però ti interessa solo ottenere una U, puoi farlo anche con un solo border, semplificando molto lo XAML di riferimento:

    <Grid Margin="20">
        <Border Margin="0" Padding="0"
                BorderThickness="2, 0, 2, 2"
                BorderBrush="Black"></Border>
    </Grid>



Tieni presente che, in linea di massima, i controlli definiti nei contenitori giusti si ridimensionano in automatico, un po' come facevano i controlli WinForm quando li ancoravi ai margini.

Se il tuo problema riguarda anche i disegni (quindi linee o poligoni generici), di norma si usa un Canvas (tela, area di disegno) che viene messo all'interno di in ViewBox (controllo che ridimensiona tutto quello che c'è all'interno). Il ViewBox è un componente generale, che può ridimensionare anche i controlli standard (pulsanti, label, ...).

Per il funzionamento del ViewBox ti giro un esempio già pronto: https://wpf.2000things.com/2014/04/30/1062-scaling-a-canvas-using-a-viewbox/


Spero di esserti stato d'aiuto
17 messaggi dal 14 luglio 2016
Grazie JoeRuspante,

Ora effettuo delle prove seguendo le indicazioni del link che mi hai allegato https://wpf.2000things.com/2014/04/30/1062-scaling-a-canvas-using-a-viewbox/

Sembra che sia proprio quello che cercavo, ti tengo aggiornato.
17 messaggi dal 14 luglio 2016
Grazie JoeRuspante ti confermo che è quello che cercavo...&#128521;

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.