2009-11-12 5 views
16

Sto imparando WPF da solo e non riesco a trovare un modo per farlo funzionare.Come impostare un'immagine .PNG come immagine di sfondo TILED per il mio modulo WPF?

Ecco il mio codice:

<Window x:Class="Test.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Test" Height="600" Width="800" > 
<DockPanel> 
    <Menu DockPanel.Dock="Right" 
      Height="30"    
      VerticalAlignment="Top" 
      Background="#2E404B" 
      BorderThickness="2.6"> 
     <Menu.BitmapEffect> 
      <DropShadowBitmapEffect Direction="270" ShadowDepth="3" Color="#2B3841"/> 
     </Menu.BitmapEffect>       
    </Menu> 
</DockPanel> 

Come posso far apparire un'immagine di sfondo in maiolica?

risposta

24

O, forse, si potrebbe usare Visual Brush:

<Window 
    x:Class="Test.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Test" Height="600" Width="800"> 
    <Window.Background> 
    <VisualBrush TileMode="Tile" Viewport="0,0,0.5,0.5"> 
     <VisualBrush.Visual> 
     <Image Source="image.png"></Image> 
     </VisualBrush.Visual> 
    </VisualBrush> 
    </Window.Background> 
</Window> 
+0

Spiegheresti cosa significano le quattro cifre in ViewPort? Ho suonato con loro, ma non riesco a capire cosa facciano concisamente. –

+5

La proprietà Viewport imposta la posizione e le dimensioni del riquadro di base. Dai un'occhiata agli esempi qui: http://msdn.microsoft.com/en-us/library/system.windows.media.tilebrush.viewport.aspx Fondamentalmente, "0,0,0,5,0.5" significa che il la tessera base occuperà spazio dal punto (0,0) a (0,5,0,5), cioè dall'angolo in alto a sinistra dell'area di uscita al centro. (1,1) è l'angolo in basso a destra. È consigliabile utilizzare MSDN Library. È davvero utile Tutte le risposte ci sono – jfrej

1

Per impostare un'immagine di sfondo per il controllo si deve aggiungere ImageBrush markup

<MenuItem.Background> 
    <ImageBrush ImageSource="path/to/image.png" /> 
</MenuItem.Background> 

Se si vuole fare un fondo per l'intera finestra è necessario cambiare MenuItem da Window

44

Impostare i ViewportUnits a assoluta, che permetteranno di definire la dimensione in pixel della vostra immagine nella finestra. Nel mio esempio la dimensione dell'immagine è 32x32.

<Window.Background> 
    <ImageBrush ImageSource="image.png" TileMode="Tile" ViewportUnits="Absolute" Viewport="0,0,32,32"/> 
</Window.Background> 
+4

questa è una risposta migliore –

+0

La risposta accettata non ha funzionato per me; questo ha fatto – RandomEngy

+1

Oh uomo, mi stavo strappando i capelli cercando di capire perché non funzionava per me. Si scopre che stavo usando 'ViewboxUnits' invece di' ViewportUnits': S – craftworkgames