Domanda

Ho un problema con ImageBrush:

<Window ... >
    <Grid>
        <Grid.Background>
            <ImageBrush ImageSource="Controls\Images\notebook_paper_Line.jpg" TileMode="FlipX"
                        Viewport="0,0,1,0.09" />
        </Grid.Background>        
    </Grid>
</Window>

Voglio ripetere immagine mentre l'utente finestra di ridimensionamento. Ma attualmente immagine diventa scala mentre l'utente finestra di ridimensionamento. (Nota che la dimensione immagine è piccola e lo uso TileMode e Viewport di ripeterlo, e problema si verifica durante il ridimensionamento!).

Qualsiasi codice XAML sarà grande! :)

e mi dispiace per il cattivo inglese !!!

È stato utile?

Soluzione

Per impostazione predefinita, il Viewport per un TileBrush è 0,0,1,1 e le ViewportUnits sono RelativeToBoundingBox, nel senso che 0,0,1,1 mappe per l'intera dimensione di destinazione (in questo caso, i limiti della griglia ).

Quindi, se si vuole un piastrelle ImageBrush, si vuole regolare la Viewport. Se si dovesse impostare la finestra da 0,0, 0,5, 0,5, si dovrebbe vedere immagini affiancate 2 x 2 (dal momento che ogni tessera sarà pari al 50% x50% la dimensione della griglia), o 0,0,0.25, 0.1 produrrebbe un piastrelle 4x10, ecc ...

Tuttavia, che ancora non impedisce l'immagine dal ridimensionamento. Quindi nel tuo caso, quello che probabilmente si desidera è quello di impostare la finestra alle dimensioni della vostra immagine, e impostare le ViewportUnits a Absolute invece di RelativeToBoundingBox.

Nel XAML sotto ho un'immagine di 24x24 pixel, così ho impostato la mia finestra di conseguenza. Questo piastrelle l'immagine più volte per la dimensione completa della griglia. Se la griglia viene ridimensionato, appariranno più tessere.

<ImageBrush ImageSource="Images\book_green.png" TileMode="FlipX" 
            Viewport="0,0,24,24" ViewportUnits="Absolute" />

Mi auguro che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top