2016-09-16 36 views
-1

我想實驗我的WPF應用程序的圖像背景。我下載了一些紋理,但不幸的是我有一個問題。 這裏是我的XAML:平鋪背景 - 瓦片之間的黑色空間

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="458" Width="473"> 
    <Window.Background> 

     <VisualBrush TileMode="Tile" Viewport="0,0,0.5,0.5" Stretch="None"> 
      <VisualBrush.Visual> 
       <Image Source="Images/binding_dark.png" Stretch="None"> 
        <Image.OpacityMask> 
         <ImageBrush ImageSource="Images/binding_dark.png" Stretch="None" TileMode="Tile"/> 
        </Image.OpacityMask> 
       </Image> 
      </VisualBrush.Visual> 
     </VisualBrush> 
    </Window.Background> 
    <Grid> 

    </Grid> 
</Window> 

這只是一個空的窗口,但是這只是看到更好的問題是什麼。 這裏的結果: Weird spacings

我想獲得一個不錯的質感爲我的應用程序的背景,但由於某種原因,圖像不相互對齊 - 他們之間有這個奇怪的黑色間隔。這是什麼原因?

//編輯 只是爲了澄清: 我想有許多建在同一圖像的平鋪副本的背景 - 不是一個imgage填充整個窗口

回答

1

爲了讓瓷磚背景沒有空間之間,你需要要添加:Stretch="Uniform"

此外,您應該將Viewportunits設置爲絕對和大小。更改32到圖像的大小在下面的代碼:

ViewportUnits="Absolute" Viewport="0,0,32,32" 

全碼:

<Window.Background> 

<ImageBrush ImageSource="/TestApp;component/Images/bg.png" ViewportUnits="Absolute" Viewport="0,0,32,32" Stretch="Uniform" TileMode="Tile" /> 

</Window.Background> 
0

嘗試設置的背景格,不在窗口,像這樣:

<Grid> 
    <Grid.Backgroud> 
     <ImageBrush Source="Images/binding_dark.png" x:Name="image" Stretch="UniformToFill"/> 
    </Grid.Background> 
</Grid> 

您可以設置整個窗口的背景,但我不知道這是一個很好的做法

+0

我想你的代碼,但它不是我想要得到的結果。我的圖像分辨率相當低。我希望有一種相互顯示的圖像。我不想讓一張圖片填滿整個窗口 - 這種方式看起來像素化。 – Loreno

+0

我也嘗試將圖片的TileMode設置爲「平鋪」,但它不會更改任何內容 – Loreno

+0

@Loreno,嗯,有趣,請檢查您的圖片。它沒有透明邊框嗎?我敢打賭這是一個PNG – Alex