質問

問題があります 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>

ユーザーのサイズ変更ウィンドウ中に画像を繰り返したいです。しかし、現在、ユーザーがウィンドウを変更する間、画像はスケールを取得します。 (画像サイズは小さく、私は使用していることに注意してください TileModeViewport それを繰り返すために、それをサイズ変更中に問題が発生します!)。

どんなXAMLコードも素晴らしいでしょう! :)

そして、私は英語が悪いことをお詫びします!!!

役に立ちましたか?

解決

デフォルトでは、TileBrushのビューポートは0,0,1,1であり、ViewPortunitsはRelativeToboundingBoxです。つまり、宛先サイズ全体に0,0,1,1のマップ(この場合、グリッドの境界)がマップされます。

そのため、ImageBrushをタイル張りにする場合は、ViewPortを調整する必要があります。ビューポートを0,0、.5、.5に設定する場合、2 x 2のタイル張りの画像が表示されます(各タイルはグリッドのサイズの50%x50%です)、つまり0,0,0.25、0,0,0.25、 0.1は4x10タイルなどを生成します...

ただし、それはまだ画像の再スケーリングを妨げません。したがって、あなたの場合、おそらくあなたが望むのは、ビューポートを画像のサイズに設定し、relativeToboundingboxの代わりにビューポートウニットを絶対に設定することです。

下のXAMLには24x24ピクセルの画像があるので、それに応じてビューポートを設定します。これにより、グリッドのフルサイズのために画像を繰り返しタイルします。グリッドがサイズ変更されている場合、より多くのタイルが表示されます。

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

それが役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top