質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

Q&A

解決済

1回答

312閲覧

visual studio C# 画像をリソースに追加する際にBitmap型にしたい

LunaShoot

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

1グッド

1クリップ

投稿2024/10/29 07:36

編集2024/10/29 08:28

実現したいこと

リソースファイルに画像(png)のリソースを追加する際に、型をBitmapに設定したいです。

現状と問題点

visual studio2022でC#のwindowsフォームアプリ(.NET8.0)を作ろうとしています。リソースファイルについて質問があります。プログラミング初心者なので可能でしたら簡単に説明していただけると幸いです。
まず、以下の手順でリソースファイルを作成しました。

プロジェクト名を右クリックしてプロパティを開く
-->リソースを選択し、「アセンブリ リソースを作成する/開く」をクリック

これによりPropertiesフォルダが作成され、その下にResource.resxが作成されました。
また、同時にリソースエクスプローラーが表示されるようになりました。ここに、以下の手順でリソースを追加しようとしました。

リソースエクスプローラーの左上でResourcesを選択(他の選択肢にはForm1がある)
-->画面上部のプラスマーク(リソースの作成)をクリック
-->新しいリソースの追加という画面が表示される
-->タイプの項目でImageを選択
-->既存のファイルを追加から、ローカルに保存してある画像ファイル(png)を選択
-->名前を付けて保存という項目に2つの選択肢が表示されるので、どちらかを選ぶ
・System.Byte
・System.Drawing.Icon(Windows Forms)
-->ファイルに追加の項目がResources.resxであることを確認する
-->名前はデフォルトのまま変更せず追加をクリック

まず、System.Drawing.Icon(Windows Forms)を選択した場合、直ちに問題が生じます。以下の文章が出力に表示されました。

[15:54:52.031785] fail: Request failures: Sessions/InitializeRootComponent.
Microsoft.DotNet.DesignTools.Client.DesignToolsServerException: 行 123、位置 5 上のデータの型 は、作成中に次の例外をスローしたため読み込めません:Argument 'picture' must be a picture that can be used as a Icon. Line 123, position 5. ---> Microsoft.DotNet.DesignTools.Client.DesignToolsServerException: Argument 'picture' must be a picture that can be used as a Icon.
--- 内部例外スタック トレースの終わり ---

.icoではなく、.pngにもかかわらずSystem.Drawing.Icon(Windows Forms)が選択されることが問題なのではないかと考えられます。

次に、System.Byteを選択した場合です。選択し、リソースを追加した段階では正常です。ここで、Form1.csに以下のようなコードを書きました。

cs

1namespace WinFormsApp1 2{ 3 public partial class Form1 : Form 4 { 5 Image image = Properties.Resources.<リソース追加時の名前>; 6 public Form1() 7 { 8 InitializeComponent(); 9 } 10 } 11}

すると、Properties.Resources.<リソース追加時の名前>に赤く波線が引かれ、
「型'byte[]'を'System.Drawing.Image'に暗黙的に変換できません」
というメッセージが表示されました。png画像をリソースに追加し、Bitmap型として利用したいです。そのためには、一旦System.Drawing.Icon(Windows Forms)を仕方なしに選択してから、以下のような手続きを踏む必要がありました。

cs

1using System.IO; 2namespace WinFormsApp1 3{ 4 public partial class Form1 : Form 5 { 6 Image image; 7 byte[] imageData = Properties.Resources.<リソース追加時の名前>; 8 9 public Form1() 10 { 11 InitializeComponent(); 12 using (MemoryStream ms = new MemoryStream(imageData)) 13 { 14 image = Image.FromStream(ms); 15 } 16 } 17 } 18}

これでも問題なく希望の結果が得られるのですが、毎度これでは面倒です。可能であれば、pngをリソースファイルに追加する時点で型をBitmapにしておきたいです。

動画やブログでいろいろと調べていると、どの方もリソースファイルを作るところまでは同じなのですが、リソースエクスプローラーではなく、それによく似た画面が表示されていました。そこへ画像をドラッグアンドドロップするだけでリソースを追加できており、その上、型もBitmapになっていました。リソースエクスプローラーに画像ファイルをドラッグアンドドロップすると、ピクセル単位に拡大された画像が表示されるだけであり、リソースの追加すらされませんでした。

理想は、ドラッグアンドドロップでリソースを追加することですが、そうでなくてもpngをリソースに追加する際にBitmap型が選べるようになってほしいです。何か方法はありますでしょうか。

よろしくお願いします。

TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

juner

2024/10/29 07:41 編集

ソースコードは ```の行 で囲ってください 多分 多段スペースがソースと認識されており、見づらいです。 ```cs // source ``` の様な感じで
LunaShoot

2024/10/29 08:29

ご指摘ありがとうございます。 修正いたしました。
juner

2024/10/29 08:29

対応ありがとうございます!
guest

回答1

0

ベストアンサー

つい最近新しい「リソース エクスプローラー」という機能が入りました。
これは今までの「リソース エディター」を置き換えるものです。
Visual Studio 2022 リリース ノート | Microsoft Learn

ただまあいろいろ不具合が出ているようです^^;
Developer Community

動画やブログでいろいろと調べていると、どの方もリソースファイルを作るところまでは同じなのですが、リソースエクスプローラーではなく、それによく似た画面が表示されていました。

今までの「リソース エディター」を開く手順は以下の通りです。

  1. ソリューション エクスプローラーでResources.resxを右クリック
  2. 「ファイルを開くアプリケーションの選択(N)...」を選択
  3. 「管理対象リソース エディター(レガシ)」を選択しOK
    しばらくは「規定値として設定(D)」を押してもいいかもw
  4. あとはよくある説明と同じ

Disable VS 2022 Revamped Resource Editor 17.11.5 - Developer Community


PictureBoxに表示する目的なら、PictureBoxImageプロパティの右端「...」ボタンを押すと、リソースの選択ダイアログが出るので「インポート(M)...」ボタンでリソースの登録をしてくれます(リソース エディターを開く必要もありません)

投稿2024/10/29 09:02

編集2024/10/29 09:04
TN8001

総合スコア9807

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LunaShoot

2024/10/29 09:14

ご回答の通りにやってみたところ解決しました。本当にありがとうございます。大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問