Frage

Ich habe ein Problem mit 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>

Ich mag Bild wiederholen, während Benutzer Fenster Größe ändern. Aber zur Zeit Bild bekommt Skala, während Benutzer Fenster Größe ändern. (Beachten Sie, dass die Bildgröße ist klein und ich verwende TileMode und Viewport es zu wiederholen, und Problem tritt auf, während seine Größe zu ändern!).

Jeder Code XAML wird groß sein! :)

und es tut mir leid für schlechtes Englisch !!!

War es hilfreich?

Lösung

In der Standardeinstellung ist das Ansichtsfenster für eine TileBrush 0,0,1,1 und die ViewportUnits sind RelativeToBoundingBox, dass 0,0,1,1-Karten auf die gesamte Zielgröße bedeutet (in diesem Fall die Grenzen des Grid ).

Wenn Sie also eine ImageBrush kacheln möchten, werden Sie die Ansichtsfenster anzupassen. Wenn Sie das Ansichtsfenster auf 0,0 eingestellt sind, 0,5, 0,5, sollten Sie Bilder sehen gefliest 2 x 2 (da jede Kachel 50% x50% der Größe des Rasters sein wird), oder 0,0,0.25, 0,1 produzieren würde eine 4x10 Fliesen, etc ...

Aber das ist noch nicht das Bild verhindern rescaling. Also in Ihrem Fall, was Sie wahrscheinlich wollen, ist das Ansichtsfenster auf die Größe des Bildes zu setzen, und stellen Sie die ViewportUnits zu Absolute statt RelativeToBoundingBox.

In der XAML unten Ich habe ein 24x24 Pixel-Bild, so dass ich meine Ansichtsfenster entsprechend gesetzt. Diese Fliesen das Bild immer wieder für die volle Größe des Gitters. Wenn das Raster der Größe verändert wird, werden mehr Kacheln angezeigt.

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

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top