2014-07-23 193 views
2

我有一個窗口與圖像作爲背景。在那個窗口上我也有按鈕和其他控件。窗口背景圖像模糊效果

這是我爲窗口樣式:

<Style x:Key="MyWindow" TargetType="{x:Type Window}"> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <ImageBrush ImageSource="Images\myImage.png" /> 
      </Setter.Value> 
     </Setter> 
     <Setter Property="Effect"> 
      <Setter.Value> 
       <BlurEffect Radius="20" /> 
      </Setter.Value> 
     </Setter> 
    </Style> 

的問題是,模糊效果應用到整個窗口,而不只是背景圖像。所以,我的按鈕也很模糊,這不是我想要的。我只想讓圖像背景變得模糊,而不是按鈕。我怎樣才能做到這一點?

回答

4

而不是使用圖像刷你的窗口的背景,添加Image控制作爲第一個(最低)元素到你的窗口的頂級容器,並設置影響有:

<Window ...> 
    <Grid> 
     <Image Source="Images\myImage.png" Stretch="Fill"> 
      <Image.Effect> 
       <BlurEffect Radius="20"/> 
      </Image.Effect> 
     </Image> 

     <!-- other UI elements --> 

    </Grid> 
</Window> 

如果你真的需要一個背景畫筆,您可以使用一個VisualBrush而不是圖像刷的是這樣的:

<Style TargetType="Window"> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <VisualBrush> 
       <VisualBrush.Visual> 
        <Image Source="Images\myImage.png"> 
         <Image.Effect> 
          <BlurEffect Radius="20"/> 
         </Image.Effect> 
        </Image> 
       </VisualBrush.Visual> 
      </VisualBrush> 
     </Setter.Value> 
    </Setter> 
    ... 
</Style> 

以便對農作物模糊的背景刷的邊框,可以調整Viewbox(其由德發ult以相對單位給出)如下:

<VisualBrush Viewbox="0.05,0.05,0.9,0.9"> 

當然,精確值取決於圖像的絕對大小。您也可以通過設置ViewboxUnits="Absolute" specifiy視框在絕對單位:

<VisualBrush Viewbox="0,0,1024,1280" ViewboxUnits="Absolute"> 
+0

這工作,但它增加了周圍的模糊圖像約5 milimeters黑色邊框,並且使圖像5mm以下,這樣有餘地邊境。我怎樣才能刪除邊框? –

+0

我不知道邊界來自哪裏。這當然是你的應用程序中的某個地方。你嘗試過哪種方法? – Clemens

+0

第二個,用VisualBrush。 –