2012-05-23 5 views
6

XAML에서 ImageBrush을 사용하여 Grid에 배경을 적용하고 싶습니다.ImageBrush를 사용하는 격자 배경 이미지

브러시에 x:Key을 지정했으며 그리드에서 참조하려고합니다.

슬프게도 이미지로 배경이 전혀 나오지 않습니다. 나는 아마 잘못된 방법으로 그것을 말하는 겁니다 생각

<Window.Resources> 
    <ImageBrush ImageSource="/MAQButtonTest;component/images/bird_text_bg.jpg" x:Key="BackgroundSponge" /> 
    <Style TargetType="TextBlock"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
    </Style> 
    <ControlTemplate TargetType="Button" x:Key="ButtonTemplate"> 
     <Grid Width="444" ShowGridLines="False" SnapsToDevicePixels="True" Background="{DynamicResource BackgroundSponge}"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="51" /> 
       <RowDefinition Height="36" /> 
      </Grid.RowDefinitions> 
      <Grid Grid.Row="0" Background="#286c97"> 

      </Grid> 
      <Grid Grid.Row="1" Background="#5898c0"> 
       <ContentPresenter Grid.Row="0" /> 
      </Grid> 
     </Grid> 
    </ControlTemplate> 
</Window.Resources> 

는, 나는 DynamicResourceStaticResource을 시도했습니다.

+0

? 'Content'로 포함되어 있다면 ImageSource가 다음과 같이 보일 것입니다 :'ImageSource = "pack : // application : ,,,/component/images/bird_text_bg.jpg" – paul

+1

직접 지정하면 (리소스를 사용하지 않고) 표시됩니까? – Tim

+0

이상한 일입니다. 콘텐츠로 설정하고 Visual Studio에서 이미지를 가져 왔습니다. 나는 단순히 속성 창에서 "ImageSource"를 위해 Visual Studio 내에서 타원형 단추를 사용한 다음 자동으로 그 경로를 생성했습니다. – Luke

답변

2

:

<ImageBrush x:Key="play" ImageSource="../Images/Buttons/Play.png" /> 

그리고 이미지 브러시를 참조합니다.

<Grid Width="444" 
      Height="500" 
      Background="{DynamicResource BackgroundSponge}" 
      ShowGridLines="False" 
      SnapsToDevicePixels="True"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="51" /> 
      <RowDefinition Height="36" /> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0" Background="#286c97" Opacity="0.2" Margin="5"/> 
     <Grid Grid.Row="1" Background="#5898c0" Opacity="0.2" Margin="5"> 
      <ContentPresenter Grid.Row="0" /> 
     </Grid> 
    </Grid> 

은 너비가 괜찮지 만 높이는 어떨까요? 너의 높이가 그때 너의 아이 품목을 크게하면 그것은 나타날 것이다.

이상은 내부 자식에 여백이 있어야합니다.

마진 = "5"

또는

불투명도 = 같은 내부의 자녀가 투명하게 "0.2"어떻게 당신이 프로젝트의 배경 이미지를 포함하는

+0

고마워요! 나는 화가났다. – Luke

+0

절대 경로를 사용하여 하드 드라이브에있는 이미지를 가져올 때 자동으로 내 보내지는 않습니까? – BlueWizard

+0

내부 리소스 트리에 존재하지 않는 외부 리소스를 내보낼 수 없습니다. – JSJ

3

나는 항상 이렇게했습니다.

<Grid> 
    <Grid.Background> 
     <ImageBrush ImageSource="/Resources/Images/BG_BlankOptimized.png"/> 
    </Grid.Background> 
</Grid> 

이상의 바울은 그 스타일을 호출하는 정적 리소스를 사용하여 무엇을 제안 같은 이미지 경로를 사용하여 ImageBrush와 자원하여 호출하는 경우.

9

저는 이것을 일반적으로 사용합니다. 이미지가 리소스로 프로젝트에 추가되면 상대적으로이를 참조하십시오. 당신이 늘 배경을 볼 수있는 이유는 외부 그리드의 사용 가능한 모든 공간 이잖아 덮개 내부 차일이 주 그리드에서

<Border Background="{StaticResource play}"/> 
+0

필자가 가장 중요하게 생각하는 부분은 "이미지가 리소스로 프로젝트에 추가 된 경우"라는 부분입니다. 왜냐하면 제 경우에는 컨텐츠로되어 있기 때문에 문제가있었습니다. 감사! – Nikola