のアーカイブ

"アイコン"タグ付きの投稿

Silverlightのコントロールのツールボックスアイコンを追加する方法

2009年1月21日 1コメント

変更履歴:

  • 最初のSilverlight 2/VS2008/Toolkit 2008年12月リリースのために2008年1月21日に公開されています。
  • 2009年12月5日に更新のSilverlight 4/VS2010/Blend3/Toolkit 2009年11月リリースのために。

Silverlightのランタイム(例:system.windows.dll)とSDK(例:system.windows.controls.dll)のコントロールは、Visual StudioとBlendで素敵なツールボックスのアイコンを持っている。 Silverlightツールキット2008年12月のリリースでは、私の前のポストで説明したようにツールキットのため、あまりにもコントロールしている追加のSilverlight Toolkitの設計時の特徴

カスタムアイコン

それは、Silverlight 2 SDK、およびSilverlightツールキット2008年12月のリリースで実行する方法この記事では説明しています。

ランタイムアセンブリ内のアイコンを制御

Silverlightツールキット2008年12月リリースでは、デザイン時のアセンブリを使用せずにコントロールのツールボックスアイコンを埋め込む方法を示しました。

Visual Studioで開いているSilverlight.Controls.sln(以前の記事の参照のSilverlight Toolkitの設計時の機能の実装ツールキットのソースをダウンロードする方法の詳細については):
実行時のアセンブリは、Visual Studioビューのアイコンを埋め込む

メモ帳でまたはオープンControls.csproj:

の<ItemGroup>
<EmbeddedResource Include="Microsoft.Windows.Controls.AutoCompleteBox.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.DockPanel.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Expander.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Label.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.TreeView.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Viewbox.Icon.png" />
</ ItemGroup>

反射鏡のまたはオープンMicrosoft.Windows.Controls.dll:

リフレクタビュー、実行時のアセンブリにアイコンを埋め込む

特定の命名規則と実行時にアセンブリMicrosoft.Windows.Controls.dllのカスタムツールボックスアイコンが埋め込まれているすべての3つのショーは、リソース、。 例としてMicrosoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png上記取る。

  • 第一Microsoft.Windows.Controlsを線でcontrols.csprojファイルで指定されたルートの名前空間、です:<RootNamespace> System.Windows.Controls </ RootNamespace>
  • Microsoft.Windows.Controls.AutoCompleteBoxは AutoCompleteBoxの名前空間を含むクラスではなく、アセンブリの完全修飾名です。
  • 名前の残りの部分は、icon.pngは 、もっと後で説明するように、アイコンのリソースタイプを指定します。

デザイン時のアセンブリにコントロールアイコン

Silverlight 2のSDKには、デザイン時のアセンブリにコントロールアイコンを埋め込むのアプローチを示した。

反射鏡のオープンSystem.Windows.Controls.Design.dll(それは、%ProgramFiles%\ MicrosoftのSDKの\のSilverlight \ v2.0の\ライブラリ\クライアントの下にインストールされます):

設計時のアセンブリに埋め込むアイコン、リフレクタビュー

例としてControls.Design.Icons.Calendar.bmp上に取る。

  • Controls.Designはライン<RootNamespace> Controls.Designとのcsprojファイルで指定されたルートの名前空間、です</ RootNamespace>
  • アイコンは Calendar.bmpファイルはソースツリー内にあるサブフォルダです。
  • Calendar.bmpは、ソースツリー内のアイコンのリソースファイルの名前です。

コントロールアイコンリソースの命名規則

そのため、2つの例は、上から、我々は、コントロール用のカスタムツールボックスアイコンは、実行時のアセンブリ内のリソース(ので、デザイン時のアセンブリを出荷する必要がない)、または設計時のアセンブリに埋め込まれていることがわかります(ので、アイコンを変更する柔軟性を持っている、のような実行時のアセンブリ)を触れることなく、異なる文化のためにそれをローカライズする。 ツール(現在のVisual Studio 2008 SP1には)特別な命名規則に基づいて、アイコンを見つけることを試みる。

  1. ファイル名の拡張子を除いた名前空間を含むコントロールのタイプ名は、で、一致するリソースの検索"{XAML | BMP | PNG | GIF | JPG | JPEG} [アイコン*。]。"。
    1. サブディレクトリが埋め込まれたリソースが検出された名前空間に影響を及ぼすことに注意してください。 例えば、ツールキットのアイコンは、すべてのアイコンのファイル名の中でこの長い文字列を置くことを避けるために、Microsoft.Windows.Controlsのサブフォルダの下に配置され、SDKには、アイコンのサブフォルダの下にすべてのアイコンを置いている間。
    2. サポートされている拡張子とファイルタイプは次のとおりです:XAML、BMP、GIF、JPG、JPEGとPNG
    3. ビットマップベースのファイル形式用の推奨画像サイズは64 × 64です。
    4. [アイコン*]命名規則に省略可能で、アイコンとして使用される画像の複数のサイズを指定することができます。 試合は、次のアルゴリズムに従います。
      1. ベクトルXAML
      2. サイズに正確に一致するものが(両方の次元)がある場合はそれを使用
      3. サイズとアスペクト比に基づいて最も近いものを使用
    5. 指定されたリソースファイルが有効なXAMLまたは有効なイメージファイルでない場合はいずれかが見つかるまで、次の一致が使用されます。
  2. イメージがコントロールと同じ名前空間、型の名前に基づいて、緩い部分にマッチされていない場合は単独でSDKの場合のように、リソースのすべてに対して検索されます。
  3. 別のホストは、ツールボックスのアイコンのための別の画像サイズを使用してください。
    1. ブレンドは、その小さなサイズ(私はこれがブレンド2 SP1で動作しているとは思わない)のためにサイズが大きく、12 × 12用24 × 24を使用しています。
    2. サイダー(Visual Studioには)16 × 16のBMPファイルを使用しています。

ブログ記事WPFデザイナでコントロールのツールボックスアイコンを指定するには、詳細に命名規則を説明します。


Blend3&VS2010の更新

この記事が最初に2008年1月21日に公開されて以来、我々はコントロールのアイコンに関する2つの重要な改良を加えました。

  • ブレンド3があまりにもコントロールのアイコンが表示されます:[オブジェクトとタイムラインのアセットライブラリには大きなアイコン(24 × 24)、および小さなアイコン(12 × 12)。 参照してSilverlightのデザインタイムを:ツールキット2009年7月リリースのアップデート詳細については。
  • あなたはBlend 3とVisual Studio 2010で(とそれに関連付けられたアイコン)、コントロールを登録することができます。 参照してくださいVisual StudioやBlendでのSilverlightコントロールを登録する詳細については。
  • アイコンリソースの命名規則は、デザイン時のアセンブリの命名規則と一緒に改訂されている。 参照してSilverlightのデザインタイムのアセンブリをデザイン時のアセンブリのための強化された命名規則の詳細については、。 アイコンリソースの検索は、設計時のメタデータ 、すなわちロードされる順序とは逆の順序ではないことに注意してください、ブレンドは、最初の*. Expression.Design *. dll内の上記のアイコンリソースの命名規則に従って制御用の組み込みアイコンリソースを検索します。それは、検索させブレンドします失敗した場合にのみ、共有*.デザイン*. dllを第二、そして再び失敗した場合には、埋め込まれたアイコンのリソースに対応するランタイムDLLを検索する場合にだけ、とすべてが失敗した場合、ブレンドは、デフォルトのアイコンが表示されますコントロール。 Visual Studio 2010には、同様の方法でそれを行いますが、検索*. VisualStudio.Design *. dllを最初の。
  • BlendとVisual Studioは現在、より多くのアイコンのフォーマットをサポートし、希望するサイズのリソース(24 × 24と12 ×ブレンド、12、および16 × 16 VS用)が見つからない場合はアイコンを拡大縮小されます。

Silverlightのツールキットには、アイコンリソースを埋め込 ​​むために、以下の命名規則を使用します。

  • あいまいさを避けるためだけではなく、型の名前(例:カレンダー)の完全な名前(名前空間+タイプ、EX。System.Windows.Controls.Calendar)を使用します。
  • 。VisualStudio.Design *. DLL内の共有。design.dllのブレンドのためのアイコン、およびVisual Studioのツールボックスのアイコンを置く。 1つはVisualStudio.Design *. dllで存在する場合、この方法では、VS2010は、右のツールボックスのアイコンを表示することができます、そうでない場合、VS2010は16 × 16にそれを拡大縮小、ブレンドのためにアイコンをロードし、ツールボックスに表示することができます。
  • 最後の手段としてのみランタイムdllでアイコンリソースを入れて(例、唯一のアイコンリソースを持つデザイン時のアセンブリの出荷を避けるため)。

あなたのコントロールのアイコンリソースの命名規則を参照できるのSilverlight Toolkitのソースコードを

Embed Blend Icons in Shared .Design.dll

Embed Visual Studio Icons in .VisualStudio.Design*.dll