Question

J'ai un problème avec 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>

Je veux répéter l'image alors que la fenêtre de redimensionnement utilisateur. Mais actuellement image devient échelle alors que la fenêtre de redimensionnement utilisateur. (Notez que la taille d'image est petite et je l'utilise TileMode et Viewport de le répéter, et le problème se produit tout en le redimensionnant!).

Tout code XAML sera grand! :)

et je suis désolé pour le mauvais anglais !!!

Était-ce utile?

La solution

Par défaut, la fenêtre d'affichage pour une TileBrush est 0,0,1,1 et les ViewportUnits sont RelativeToBoundingBox, ce qui signifie que 0,0,1,1 cartes à l'ensemble de la taille de la destination (dans ce cas, les limites de la grille ).

Donc, si vous voulez une tuile ImageBrush, vous voulez régler la fenêtre d'affichage. Si vous deviez définir la fenêtre d'affichage à 0,0, 0,5, 0,5, vous devriez voir des images en mosaïque 2 x 2 (puisque chaque tuile sera de 50% x50% la taille de la grille), ou 0,0,0.25, 0,1 produirait un pavage 4x10, etc ...

Cependant, cela ne fonctionne toujours pas obstacle à l'image de redimensionnant. Donc, dans votre cas, ce que vous voulez sans doute est de définir la fenêtre à la taille de l'image et définissez les ViewportUnits à absolu au lieu de RelativeToBoundingBox.

Dans le XAML ci-dessous j'ai une image de pixels 24x24, donc je tournerai ma fenêtre en conséquence. Ce carrelage l'image à plusieurs reprises pour la taille complète de la grille. Si la grille est redimensionnée, plus de tuiles apparaissent.

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

J'espère que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top