2009-11-12 25 views
16

Estoy aprendiendo WPF por mi cuenta y parece que no puedo encontrar la manera de hacer que esto funcione.¿Cómo establecer una imagen .PNG como una imagen de fondo INCLINADA para mi formulario WPF?

Aquí está mi código:

<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> 

¿Cómo puedo hacer una imagen de fondo de azulejos parece?

Respuesta

24

O, tal vez, usted podría utilizar 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

¿Podría explicarnos qué significan los cuatro dígitos en ViewPort? He jugado con ellos, pero parece que no puedo entender qué hacer de forma concisa. –

+5

La propiedad de la vista establece la posición y las dimensiones de la tesela base. Eche un vistazo a los ejemplos aquí: http://msdn.microsoft.com/en-us/library/system.windows.media.tilebrush.viewport.aspx Básicamente, "0,0,0.5,0.5" significa que el la base tomará espacio desde el punto (0,0) hasta (0,5,0.5), es decir, desde la esquina superior izquierda del área de salida hasta el centro. (1,1) es la esquina inferior derecha. Debe hacer uso de MSDN Library. Es realmente útil. Todas las respuestas están ahí. – jfrej

1

Para establecer una imagen de fondo para controlar hay que añadir ImageBrush marcado

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

Si desea hacer un fondo para toda la ventana tiene que cambiar Menultem por la ventana

44

Establecer los ViewportUnits a absoluta, lo que permitirá definir el tamaño en píxeles de la imagen en el visor. En mi ejemplo, el tamaño de la imagen es 32x32.

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

esta es una respuesta mejor –

+0

La respuesta aceptada no funcionó para mí; este lo hizo – RandomEngy

+1

Oh hombre, estaba tirando de mi cabello tratando de descubrir por qué esto no estaba funcionando para mí. Resulta que estaba usando 'ViewboxUnits' en lugar de' ViewportUnits': S – craftworkgames

Cuestiones relacionadas