Winforms アプリケーションで .ico ファイルを使用するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2408108

質問

WinForms C# 3.0 アプリケーションを開発しています。私たちのデザイナーは、必要なアートをすべて含む大量の .ico ファイルを作成しました。.ico が選択されたのは、同じ画像が異なる次元の複数の場所で必要になることがよくあるためです。

さて、.ico ファイルは 本当に Visual Studio で使用するのは面倒です。これらの画像を使用する唯一の方法は、画像リストを使用することのようです (すべてのコントロールでサポートされているわけではありません)。他のリソースと比較して、これを書くことはできません:

foo.Image = global::RFQHUB.RFQHUBClient.Properties.Resources.foo; //    Cannot implicitly convert type 'System.Drawing.Icon' to 'System.Drawing.Image'  

私が検討しているオプションは次のとおりです。

  • メイン ウィンドウ内のすべてのアイコンを参照して、可能なすべてのサイズの ImageList を作成します。これらの ImageList を他のウィンドウからリンクし、直接使用できない場合に ImageList から Image オブジェクトをエクスポートする方法を見つけます。ImageList には Draw() メソッドが含まれているため、これはおそらく可能なはずです。
  • いくつかの x16.gif ...x48.gif にあるすべての x.ico を変換し、リソースを通じてそれらを使用します。

Winform アプリケーションで .ico リソースをうまく使用している人がいるかどうか知りたいと思っています。では、どのように設定したのですか?

役に立ちましたか?

解決

ICOかなり時代遅れ形式ではありませんが、それは近いです。それはまだあなたのアプリケーションアイコンに便利ですが、それ以外のほとんどすべてのために、それはあなたが必要とする各サイズのためにイメージリストを使用することをお勧めします。そして、それは、複数の画像を格子状にレイアウトさ含まれていたビットマップからイメージリストを移入するためにはるかに高速です。

PNGは、アルファチャンネルをサポートしていますので、

また、ので、あなたのリソースに.PNGファイルとしてそれらを格納し、最良の結果を得るためにあなたのビットマップにアルファチャンネルの透明度を使用することは、行くための最良の方法です。 ICOとGIFファイルが透明性のために単一ビットのみをサポート - すべてのピクセルは完全に不透明または完全に透明のいずれかです。透明性のための8ビットのアルファチャネルは非常に良く見えます。

あなたが戻って描画ボードにあなたのアーティストを送信することができた場合は、

あなたはそう、彼/彼女は、アルファとの完全なアンチエイリアス画像を行う必要があります。あなたができない場合、私はあなたがイメージリストにロードに適したビットマップにあなたのアイコンファイルのすべてを変換するための小さなプログラムを書くことを示唆しています。

他のヒント

PNGに画像を変換します。ポイント。プライベートにと話を取得する必要があると起動するファイルを.ICO使用することを決めた誰でも - 。引数は何の地面を保持していない

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top