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

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

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

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

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

Q&A

3回答

6046閲覧

C#の画像判定

Yoshikun_0945

総合スコア224

C#

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

Visual Studio 2010

Microsoft Visual Studio 2010はMicrosoftが提供している統合開発環境(IDE)です。

0グッド

0クリップ

投稿2017/02/04 19:11

C#でプログラムを作成しています。
FormにPictureBoxが3×3の9個あります。
####PictureBoxのID(Name)
左上:SLOT_1
左真ん中:SLOT_2
左下:SLOT_3
中央の上:SLOT_4
中央:SLOT_5
中央の下:SLOT_6
右上:SLOT_7
右真ん中:SLOT_8
右下:SLOT_9
#実現したいこと
SLOT_1に指定してある(表示している)画像ととSLOT_4に指定してある画像が等しいときはこうする等しくないときはこうするという判定を行いたいのですが、どのように行えばよろしいでしょうか?
ネットで検索しても結果が出ませんでした

判定する画像は全て各IDの.Imageに指定してある画像を判定対象とする

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

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

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

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

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

guest

回答3

0

Windows Formは上位の部品のコンテナに格納格納されています。

これからコンテナを使って一括処理できます。

パネルの上にPivtureBoxを配置します。

上にあるように、各ピクチャBOXにタグを設定した上で

ArrayList list = new ArrayList(); for (int i = 0; i < panel1.Controls.Count; i++) { Type obj = panel1.Controls[i].GetType(); if(obj.Name == "PictureBox") { list.add(panel1.Controls[i].Tag.ToString()); } }

この方法の利点は、コントロール名に依存しない事です。
よって、汎用的なクラス化も可能です。

数値とタグを配列しましたので、後は仕様に合わせてマッチング処理してください。

int imageHeight = ((PictureBox)panel1.Controls[0]).Image.Height;
このような形で、各コントロールにもアクセスできます。

追記:Arrayリストに入れていますが、そこは必須ではありません。

投稿2017/02/06 03:32

編集2017/02/06 03:35
107User

総合スコア78

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

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

0

各PictureBoxのImageに指定している画像が等しいか判断するのではなく、
各PictureBoxのImageに画像を設定するときに、Tagプロパティに画像のインデックスでも
設定しておいて、Tagの値が等しいか判断したほうがいいのではないかと思います。

投稿2017/02/04 23:32

YAmaGNZ

総合スコア10288

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

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

Yoshikun_0945

2017/02/04 23:37

タグを指定する方法を教えてください。 コードで指定する方法が知りたいです。 表示する画像は全てプログラムファイル内に入れてあります。
YAmaGNZ

2017/02/05 00:19

実際にどのように画像をセットしているか分かりませんが、画像を設定する時 SLOT_1.Image = gazou1; SLOT_1.Tag = 1; のようにして、 if(SLOT_1.Tag == SLOT_4.Tag) のように比較すればいいかと思います。 PictureBoxのTagプロパティではなくても、どのPictureBoxにどの画像を表示しているか 格納する変数を用意してもいいかと思います。
guest

0

同じ画像ファイルから読み出したものでもインスタンスが違えば比較は少し面倒になります。
インスタンスが同じであれば単純に == で比較できます。

投稿2017/02/04 22:19

Zuishin

総合スコア28662

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

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

Zuishin

2017/02/05 05:59

picts という名前の Imagelist に画像が入っているとします。 SLOT_1.Image = picts.images[0]; SLOT_2.Image = picts.images[1]; SLOT_3.Image = picts.images[0]; この時、 SLOT_1 == SLOT_2 は false となり、SLOT_1 == SLOT_3 は true となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問