C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: 画像の合成


(過去ログ 77 を表示中)

[トピック内 15 記事 (1 - 15 表示)]  << 0 >>

■45737 / inTopicNo.1)  画像の合成
  
□投稿者/ RT (200回)-(2010/01/19(Tue) 15:31:01)

分類:[C#] 

2010/01/19(Tue) 15:47:29 編集(投稿者)

こんにちは。
たびたびお世話になります。
C#でプログラミングを行っております。

質問なのですが、a,b,c,dという画像を

#########
#a#b#c#d#
#########

という風に横に結合して、表示したいのですが、どうすれば良いでしょうか?

アドバイスよろしくお願いします。
引用返信 編集キー/
■45739 / inTopicNo.2)  Re[1]: 画像の合成
□投稿者/ ぽぴ王子 (476回)-(2010/01/19(Tue) 15:53:23)
ぽぴ王子 さんの Web サイト
No45737 (RT さん) に返信
> こんにちは。
> たびたびお世話になります。
> C#でプログラミングを行っております。
> 
> 質問なのですが、a,b,c,dという画像を
> 
> #####################
> # a  # b  # c  # d  #
> #####################  
> 
> という風に横に結合していきたいのですが、どうすれば良いでしょうか?
> 
> アドバイスよろしくお願いします。

どっからどこまで教えればいいでしょう?
わからないところは明確にしておかないとダメですよ?
# って、前に誰かに言われませんでしたか。

PixelFormat が4枚とも同じで、なおかつ高さも同じだと仮定して。

イメージとしては

Bitmap newBitmap = new Bitmap(a.Width + b.Width + c.Width + d.Width, a.Height);

などとして、新しくビットマップオブジェクトを作成。

using (Graphics g = Graphics.FromImage(newBitmap))
{
    g.DrawImage(a, new Point(0, 0));
    g.DrawImage(b, new Point(a.Width, 0));
    g.DrawImage(c, new Point(a.Width + b.Width, 0));
    g.DrawImage(d, new Point(a.Width + b.Width + c.Width, 0));
}

という感じで描いてみたらいけそうな気がします。
脳内で作ったコードなので、テストしていなければコンパイルが通るかどうかすら見ていないので
あくまで参考程度に。

引用返信 編集キー/
■45740 / inTopicNo.3)  Re[1]: 画像の合成
□投稿者/ れい (863回)-(2010/01/19(Tue) 15:55:10)
No45737 (RT さん) に返信
> という風に横に結合して、表示したいのですが、どうすれば良いでしょうか?

表示とは、どんな表示を指しますか?
Windowsformですか?
Webページですか?
それとも印刷ですか?

画像はどんな画像ですか?
Bitmapですか?
Imageですか?
それとも紙に印刷された画像が手元にあるだけですか?

「#」は何ですか?
文字通り「#」ですか?
それともイゲタ状に何らかのパターンを配置したいのですか?

引用返信 編集キー/
■45742 / inTopicNo.4)  Re[2]: 画像の合成
□投稿者/ RT (201回)-(2010/01/19(Tue) 16:12:47)
No45740 (れい さん) に返信

> 表示とは、どんな表示を指しますか?
> Windowsformですか?
> Webページですか?
> それとも印刷ですか?

表示はWindowsformです。

> 画像はどんな画像ですか?
> Bitmapですか?
> Imageですか?
> それとも紙に印刷された画像が手元にあるだけですか?

Bitmapです。

> 「#」は何ですか?
> 文字通り「#」ですか?
> それともイゲタ状に何らかのパターンを配置したいのですか?

単なる区切りです。意味はないです。

引用返信 編集キー/
■45744 / inTopicNo.5)  Re[3]: 画像の合成
□投稿者/ επιστημη (2396回)-(2010/01/19(Tue) 16:18:48)
επιστημη さんの Web サイト
> Bitmapです。

4枚横に繋がって描画されればOKですか?
それとも4枚横に繋がったBitmapが欲しいのですか?

# 後者なら王子が答えてくれてます。

引用返信 編集キー/
■45745 / inTopicNo.6)  Re[3]: 画像の合成
□投稿者/ .SHO (1139回)-(2010/01/19(Tue) 16:23:02)
No45742 (RT さん) に返信

>>表示とは、どんな表示を指しますか?
>>Windowsformですか?
>>Webページですか?
>>それとも印刷ですか?

表示したいだけなの?
合体した新しいBitmapを作りたいのかと思った。。

表示したいだけなら、順番に読み込んでずらして表示すればいいじゃん。
引用返信 編集キー/
■45752 / inTopicNo.7)  Re[2]: 画像の合成
□投稿者/ RT (202回)-(2010/01/19(Tue) 16:59:38)
2010/01/19(Tue) 17:00:18 編集(投稿者)

No45739 (ぽぴ王子 さん) に返信

> PixelFormat が4枚とも同じで、なおかつ高さも同じだと仮定して。
>
> イメージとしては
>
> Bitmap newBitmap = new Bitmap(a.Width + b.Width + c.Width + d.Width, a.Height);
>
> などとして、新しくビットマップオブジェクトを作成。
>
> using (Graphics g = Graphics.FromImage(newBitmap))
> {
> g.DrawImage(a, new Point(0, 0));
> g.DrawImage(b, new Point(a.Width, 0));
> g.DrawImage(c, new Point(a.Width + b.Width, 0));
> g.DrawImage(d, new Point(a.Width + b.Width + c.Width, 0));
> }
>
> という感じで描いてみたらいけそうな気がします。
> 脳内で作ったコードなので、テストしていなければコンパイルが通るかどうかすら見ていないので
> あくまで参考程度に。

ピクチャボックスに結合した画像を出力したいのですが、gを出力するのでしょうか?
よくわかりません。アドバイスお願いします。
引用返信 編集キー/
■45753 / inTopicNo.8)  Re[3]: 画像の合成
□投稿者/ επιστημη (2397回)-(2010/01/19(Tue) 17:04:17)
επιστημη さんの Web サイト
> ピクチャボックスに結合した画像を出力したいのですが、gを出力するのでしょうか?
> よくわかりません。アドバイスお願いします。

picturebox1.Image = newBitmap;
ぢゃなくて?

引用返信 編集キー/
■45755 / inTopicNo.9)  Re[4]: 画像の合成
□投稿者/ RT (203回)-(2010/01/19(Tue) 17:10:55)
No45753 (επιστημη さん) に返信

> picturebox1.Image = newBitmap;
> ぢゃなくて?

ありがとうございます。イメージしていた事が出来ました。

皆さんアドバイスありがとうございました。またよろしくお願いします。
解決済み
引用返信 編集キー/
■45756 / inTopicNo.10)  Re[5]: 画像の合成
□投稿者/ επιστημη (2398回)-(2010/01/19(Tue) 17:33:53)
επιστημη さんの Web サイト
もちっと上手に質問できるようになろうね。
何度も往復せんと答がもらえないんじゃイライラするっしょ?

解決済み
引用返信 編集キー/
■45758 / inTopicNo.11)  Re[5]: 画像の合成
□投稿者/ ぽぴ王子 (478回)-(2010/01/19(Tue) 17:47:10)
ぽぴ王子 さんの Web サイト
No45755 (RT さん) に返信
> ありがとうございます。イメージしていた事が出来ました。
>
> 皆さんアドバイスありがとうございました。またよろしくお願いします。

全然テストもしてないコードでしたが、とりあえず何とかなって良かったです。
ただ、επιστημηさんも書いてますが、この「イメージしていた事」を
最初に書いてほしかったです。
俺様がやりたいことも含めておまいら推測しろよクソが!というのだと、みんな
答えてくれなくなりそうですよ。

引用返信 編集キー/
■45759 / inTopicNo.12)  Re[6]: 画像の合成
□投稿者/ RT (204回)-(2010/01/19(Tue) 17:58:37)
No45758 (ぽぴ王子 さん) に返信

> 全然テストもしてないコードでしたが、とりあえず何とかなって良かったです。
> ただ、επιστημηさんも書いてますが、この「イメージしていた事」を
> 最初に書いてほしかったです。
> 俺様がやりたいことも含めておまいら推測しろよクソが!というのだと、みんな
> 答えてくれなくなりそうですよ。

アドバイスありがとうございます。もっとうまく質問出来るようになりたいと思います。

ところで、解決とおもったのですが、さっきのコードだとデータが4つの場合ですが、
データが100個ある場合、ループを使って書きたいのですが、どのように記述すればよいでしょうか?
あと、ピクチャボックスは横に広いデータの場合、スライドバーは出ないのでしょうか?

アドバイスよろしくお願いします。
引用返信 編集キー/
■45762 / inTopicNo.13)  Re[7]: 画像の合成
□投稿者/ Jitta on the way (508回)-(2010/01/19(Tue) 18:19:53)
No45759 (RT さん) に返信
>
> ところで、解決とおもったのですが、さっきのコードだとデータが4つの場合ですが、
> データが100個ある場合、ループを使って書きたいのですが、どのように記述すればよいでしょうか?
> あと、ピクチャボックスは横に広いデータの場合、スライドバーは出ないのでしょうか?
>
> アドバイスよろしくお願いします。

同じになるところをループで回せば良いだけですが?
いきなりループを考えず、まず、5つにしてみましょう。そして、6つにしてみましょう。単純に増えていくところが、ループにできるところです。


物事を実現するには、二通りの方法があります。
今実現できることを列挙する。それらを組み合わせれば実現できることを列挙する。と、実現できることを組み上げていく方法。
実現したいことを実現するために、何が必要か、列挙する。それが実現できないなら、実現するために必要なことを列挙する。と、実現したいことを実現できるまで、問題を小さくしていくことの二つです。

どちらにしても、大きな問題のままでは解決できません。
引用返信 編集キー/
■45763 / inTopicNo.14)  Re[7]: 画像の合成
□投稿者/ みきぬ (719回)-(2010/01/19(Tue) 18:20:21)
> データが100個ある場合、ループを使って書きたいのですが、どのように記述すればよいでしょうか?

1. 100個の画像がすっぽりおさまるような、でっかい Bitmap をこしらえる
2. Bitmap に画像を描く位置を、Bitmap の左上(原点と言った方がいいのかしら)にセットする
3. 以下ループ
3-1. n 番目の画像を描く
3-2. 次に画像を描く位置を、n 番目の画像の横幅ぶん、右にずらす

> あと、ピクチャボックスは横に広いデータの場合、スライドバーは出ないのでしょうか?
>
スライドバーが何のことかよくわからないけど、たぶん出ないんじゃない?
引用返信 編集キー/
■45769 / inTopicNo.15)  Re[8]: 画像の合成
□投稿者/ RT (205回)-(2010/01/19(Tue) 19:38:45)
2010/01/19(Tue) 19:57:59 編集(投稿者)

No45763 (みきぬ さん) に返信
>>データが100個ある場合、ループを使って書きたいのですが、どのように記述すればよいでしょうか?
>
> 1. 100個の画像がすっぽりおさまるような、でっかい Bitmap をこしらえる
> 2. Bitmap に画像を描く位置を、Bitmap の左上(原点と言った方がいいのかしら)にセットする
> 3. 以下ループ
> 3-1. n 番目の画像を描く
> 3-2. 次に画像を描く位置を、n 番目の画像の横幅ぶん、右にずらす
>
>>あと、ピクチャボックスは横に広いデータの場合、スライドバーは出ないのでしょうか?
>>
> スライドバーが何のことかよくわからないけど、たぶん出ないんじゃない?

ありがとうございました。ループさせる事が出来ました。

アドバイスして下さった皆さん、ありがとうございました。またよろしくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -