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

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

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

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

Q&A

解決済

1回答

5280閲覧

C#でFormへの画像の読み込み方法について教えてください。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

0グッド

0クリップ

投稿2016/01/25 02:41

編集2016/01/25 02:41

いつもお世話になります。
C#, VisualStudio2010/2013, WindowFormで開発しています。
Formへの画像の読み込み方法について教えてください。
Formに画像を読む方法は、(1)デザイナーで読む、(2)コードで読むの2種類。

(1)デザイナーで読む
・デザイナーでpictureboxを配置しプロパティのimageでローカルリソースの場所を指定、またはあらかじめリソースに追加したプロジェクトリソースファイルを読む。
メリット デザイナーで見ながらレイアウトを調整できる。
デメリット リソースの変更後は再度リソースへの追加が必要。リソースが肥大化する。

(2)コードで読む
picturebox.Image = new Bitmap(path);

メリット リソースの変更後に画像ファイルだけを更新すればよい。リソースへの追加は不要。
デメリット ファイルの読み込みは実行時なので、レイアウトの調整は起動-修正を繰り返す必要がある。

たとえば背景画像の上にボタン画像を載せる場合、背景画像自体の変更があり、それにともなってボタンの位置も微調整が必要となることがあります。

この場合、
背景画像自体の変更がある。-コードのほうが読み込みがないので楽
ボタンの位置も微調整が必要ー1pixcel単位で移動したりするので、デザイナーで調整しないと大変。
ということになり、実際この状況に直面しています。

そこで、

(2)コードで読む
メリット リソースの変更後に画像ファイルだけを更新すればよい。リソースへの追加は不要。

(1)デザイナーで読む
メリット デザイナーで見ながらレイアウトを調整できる。

を両方甘受するにはどのような方法があるか、アイデアをいただけないでしょうか。

背景が12種類とかでボタンは数えたくないくらいあり、それぞれ変更や位置の微調整が続いていて、プログラムとは全然関係ないこと(ですよね?)で消耗しまくってます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

デザイン重視の商用アプリの開発では、デザイン編集用ツールを別途作るということはよくやりますね。
VisualStudioの機能を使えば同じようなことができると思います。

デザイン用のプロジェクトと実際のアプリ用のプロジェクトを二つ作り、デザイン用プロジェクトではフォームデザイナーで視認できるようにリソース埋め込みにし、アプリ用プロジェクトはコードで画像ファイルを読むように作ります。

各パーツの配置情報(サイズや座標)を設定項目に用意します。デザイン用プロジェクトではユーザースコープ、アプリ用プロジェクトではアプリケーションスコープとします。

デザイン用プロジェクトの方は、各コントロールの配置情報を設定値に書いてSaveするコードを書きます。
アプリ用プロジェクトの方は、Loadイベントあたりで各パーツの配置情報を設定値から取得して各コントロールに反映させるコードを書きます。

デザイン用プロジェクトで各パーツを配置して実行し、配置情報を保存します。
保存されたuser.configの<setting>タグをアプリ用プロジェクトのApp.configの同じ項目部分にコピペします。そうすると、VisualStudioが自動的に設定値を更新してくれます。

こんな感じでどうでしょうか。
工夫次第ではuser.configではなく独自の設定ファイルへの保存とか、背景画像毎の設定値の保存とか、いろいろできると思います。

投稿2016/01/25 05:52

catsforepaw

総合スコア5938

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

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

退会済みユーザー

退会済みユーザー

2016/01/25 05:58

なるほど。 そのように使い分けたりするのですね。 ちょっと目からうろこが落ちました。 ふたつのプロジェクトは、プロジェクト名は共通にしないとuser.configを読むのが大変になりますね。先日異なる名前にして、ひとつはxmlで読みました。 なるほどー。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問