2010-09-30 86 views
3

在我的基於桌面的WPF應用程序中,我想實現一個帶有關鍵操作(添加,更新,刪除等)的工具欄,就像您可以在任何Web界面郵件中看到的一樣-服務。在WPF/XAML中實現帶圖標的工具欄

爲了讓我有所有可能的圖標(定期,積極,殘疾人等)

那麼大的PNG圖像,我的問題是如何顯示不是整個圖像,但只有一個區。例如,在我的圖標是正方形並且具有50px側的情況下,從像素50到像素100。

換句話說,你會如何建議在WPF來實現選擇圖像的款,以顯示工具欄按鈕的內部,如果所有的圖標都放在一個大的PNG圖像?

謝謝。

P.S.我來自網絡開發,並且在那裏定期使用帶有所有圖標的大PNG圖像,並且當您想要放置特定圖標時,您必須定義想要展示的圖像區域。

回答

4

這個真沒有圖像資源,意味着WPF要管理的方式,如果你做這樣你將戰鬥平臺的自然機制。您應該考慮分割圖像,然後將每個圖像分配給視圖中的資源。然後,您可以綁定到UI中的每一個,並將其顯示爲圖像或作爲畫筆的來源。

如果您想將它們保存爲一個大圖像,則可以使用TileBrush來挑選它們,並僅顯示所需圖像的區域。

1

你可能想看看SourceRect PropertyBitmapImage類(圖片來源)上。

但我認爲codekaizen是正確的,這可能不是正確的做法。

1

您可以使用圖像將按鈕的背景設置爲ImageBrush。將TileMode設置爲NoneViewboxUnitsAbsolute。您可以將Viewbox設置爲適當的區域。然後,您可以綁定到屬性以動態更改圖像,或者如果它是靜態圖像,則直接設置值即可。

<Button Width="80" Height="80"> 
    <Button.Background> 
     <ImageBrush ImageSource="..." TileMode="None" ViewboxUnits="Absolute"> 
      <ImageBrush.Viewbox> 
       <Rect Size="80,80" X="{Binding ...}" /> 
      </ImageBrush.Viewbox> 
     </ImageBrush> 
    </Button.Background> 
</Button> 

我同意,它不是資源的最有效的使用,但是這裏是如何完成的。