1

ビットマップを受け取り、ビットマップを ICON 形式に変換する単純な関数があります。以下、関数です。(変数の代わりにリテラル値を配置しました)

    Bitmap tempBmp = new Bitmap(@"C:\temp\mypicture.jpeg");
    Bitmap bmp = new Bitmap(tempBmp, 16, 16);
    bmp.Save("@C:\temp\mypicture2.ico", ImageFormat.Icon)

正しく変換されていないようです...またはそう思います。画像が変換された後、一部のブラウザーは画像を真の "ICON" として認識しません。また、Visual Studio 2008 でさえ、アイコン形式に変換された後、画像をアイコンとして認識しません。

たとえば、変換したばかりのアイコンを使用して、Win32 フォーム アプリの Icon プロパティを設定しようとしました。ダイアログボックスを開き、変換したばかりのアイコンを選択すると、次のエラーが表示されます。

-- 「引数 'picture' は、アイコンとして使用できる画像でなければなりません。」

Web を閲覧したところ、ビットマップをさまざまな形式に手動で変換するのに時間がかかる複雑なコードに出くわしましたが、上記のコードは機能し、.NET フレームワークがこの変換を処理すると思います。

4

1 に答える 1

2

次のコードをテストしたところ、うまくいきましたが、結果は良くありませんでした。アイコンのパレットは限られており、色情報の一部が失われる可能性があることに注意してください。

    Bitmap b = new Bitmap(@"d:\file.jpg");
    Icon i = Icon.FromHandle(b.GetHicon());
    i.Save(File.Open(@"d:\file.ico", FileMode.OpenOrCreate, FileAccess.Write));
于 2010-04-19T03:29:26.417 に答える