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

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

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

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

Visual Studio

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

Q&A

解決済

1回答

549閲覧

Visual studioのPictureBoxについての質問

minimize

総合スコア23

C#

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

Visual Studio

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

0グッド

0クリップ

投稿2019/01/30 10:44

質問失礼致します。
VisualStudioのPictureBoxについて質問します。

現在ボタンを押したら、以下の処理が開始され、
PictureBoxに選択した画像が表示されるような処理をしております。

したい処理は、
このpictureBoxの上に、DrawRectanglesなどを使って、四角形を複数描きたいと思っています。
四角形の座標は、取得した画像の座標を使って表示したいと思っています。
イメージ説明
わかりずらいかもしれないので、やりたいことを画像にして見ました。
取得した画像に四角形をDrawして、PictureBoxのサイズに合わせて
表示したいと思っています。座標は左上を(0,0)と考えています。
どのようにかけば実現できますでしょうか?
よろしくお願いします。

C#

1 2 //OpenFileDialogクラスのインスタンスを作成 3 OpenFileDialog ofd = new OpenFileDialog(); 4 5 //はじめのファイル名を指定する 6 //はじめに「ファイル名」で表示される文字列を指定する 7 ofd.FileName = "default.html"; 8 //はじめに表示されるフォルダを指定する 9 //指定しない(空の文字列)の時は、現在のディレクトリが表示される 10 ofd.InitialDirectory = ""; 11 //[ファイルの種類]に表示される選択肢を指定する 12 //指定しないとすべてのファイルが表示される 13 ofd.Filter = "HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*"; 14 //[ファイルの種類]ではじめに選択されるものを指定する 15 //2番目の「すべてのファイル」が選択されているようにする 16 ofd.FilterIndex = 2; 17 //タイトルを設定する 18 ofd.Title = "開く画像を選択してください"; 19 //ダイアログボックスを閉じる前に現在のディレクトリを復元するようにする 20 ofd.RestoreDirectory = true; 21 //存在しないファイルの名前が指定されたとき警告を表示する 22 //デフォルトでTrueなので指定する必要はない 23 ofd.CheckFileExists = true; 24 //存在しないパスが指定されたとき警告を表示する 25 //デフォルトでTrueなので指定する必要はない 26 ofd.CheckPathExists = true; 27 28 //ダイアログを表示する 29 if (ofd.ShowDialog() == DialogResult.OK) 30 { 31 //画像の大きさをPictureBoxに合わせる 32 pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; 33 pictureBox1.ImageLocation = ofd.FileName; 34 35 }

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

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

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

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

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

y_waiwai

2019/01/30 11:11

なにがわからないの?四角形の書き方かな?
minimize

2019/01/30 11:20

もとの画像の大きさで四角形を書いた後に、それをPictureBoxの大きさに変換する方法がわかっていません。 四角形を書いたりして試したりしたのですが、画像だけが表示されてしまい、四角形を表示することができませんでした。
guest

回答1

0

ベストアンサー

ImageLocationを使用するのではなく、Imageクラスへ読み込み、そこへ四角を描画した後、PictureBox.Imageプロパティに設定すればいいのではないでしょうか?

C#

1Image img = Image.FromFile(ファイル名); 2using(Graphics g = Graphics.FromImage(img)) 3{ 4 using(Pen p = new Pen(Color.Red, 1)) 5 { 6 g.DrawRectangle(p, 10, 20, 100, 80); 7 } 8} 9PictureBox1.Image = img;

みたいな感じで

投稿2019/01/30 12:06

YAmaGNZ

総合スコア10242

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

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

minimize

2019/01/30 17:43

質問に答えてくださってありがとうございます。 実装してみたら、座標が大きくなるにつれて、 四角形の大きさがおかしくなってしまうようになりました。たとえば、(0,0,100,100)と(100,100,200,200)では、四角形の大きさが二倍くらい変わりました。 g.DrawRectangle(p, 10, 20, 100, 80);のところを、for文で回して、複数描画するようにしています。
minimize

2019/01/30 17:44

なぜ四角形の大きさがそんなに変化するのでしょうか?
minimize

2019/01/31 02:04

ありがとうございます!うまくいきました!助かりました・・!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問