Nicht maßstabs ImageBrush bei der Größenänderung, Wiederholen Sie es!
-
12-10-2019 - |
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 !!!
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.