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

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

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

Re[7]: pictureboxの透過指定について


(過去ログ 69 を表示中)

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

■40235 / inTopicNo.1)  pictureboxの透過指定について
  
□投稿者/ tetsuwo (1回)-(2009/08/21(Fri) 17:31:49)

分類:[C#] 

初投稿失礼します、tetsuwoと申します。

WindowsXPにて、VisualStudio2005でC#開発を行っているのですが、
画像表示で不明点が出たので質問させていただきます。


ノベルゲームのイメージで、FormのBackgroundImageに背景画像を指定し、
Pictureboxにキャラクタ画像を指定して背景+立ち絵といった表示を試みました。

キャラクタ画像にMakeTransparentで透明色を指定したところ、
背景画像も透過されてしまうのですが、BackgroundImageを残したまま
Pictureboxのみを透過する方法をご教授していただけたらと思います。


質問文に不足情報などありましたら申し訳ありません・・・
以上です、よろしくお願いいたします。

引用返信 編集キー/
■40236 / inTopicNo.2)  Re[1]: pictureboxの透過指定について
□投稿者/ ぽぴ王子 (450回)-(2009/08/21(Fri) 18:20:58)
ぽぴ王子 さんの Web サイト
No40235 (tetsuwo さん) に返信
> 初投稿失礼します、tetsuwoと申します。
>
> WindowsXPにて、VisualStudio2005でC#開発を行っているのですが、
> 画像表示で不明点が出たので質問させていただきます。
>
>
> ノベルゲームのイメージで、FormのBackgroundImageに背景画像を指定し、
> Pictureboxにキャラクタ画像を指定して背景+立ち絵といった表示を試みました。
>
> キャラクタ画像にMakeTransparentで透明色を指定したところ、
> 背景画像も透過されてしまうのですが、BackgroundImageを残したまま
> Pictureboxのみを透過する方法をご教授していただけたらと思います。
>
>
> 質問文に不足情報などありましたら申し訳ありません・・・
> 以上です、よろしくお願いいたします。
>

こちらでちょっと試してみましたが、背景画像(この場合の背景画像とは
Form の BackgroundImage に指定した画像ということですよね?)も透過される
ということはありませんでした。
VisualStudio 2008 なので環境が違うかもしれませんが、具体的なコードを
書いてもらえると助かります。
引用返信 編集キー/
■40243 / inTopicNo.3)  Re[1]: pictureboxの透過指定について
□投稿者/ 魔界の仮面弁士 (1240回)-(2009/08/21(Fri) 20:04:33)
No40235 (tetsuwo さん) に返信
> キャラクタ画像にMakeTransparentで透明色を指定したところ、
> 背景画像も透過されてしまうのですが、BackgroundImageを残したまま
> Pictureboxのみを透過する方法をご教授していただけたらと思います。

どの BackgroundImage を指しているのか、今一つ状況が掴めなかったのですが:

Form.BackgroundImage に、『□』と描かれた透過画像を貼り(最背面背景)、
PictureBox.BackgroundImage に、『メ』と描かれた透過画像を貼り(キャラクタ背景)、
PictureBox.Image に、『゛』と描かれた透過画像を貼り(キャラクタ)、
PictureBox.BackgroundColor を Color.Transparent にすれば、
それぞれが重なり合って、『図』という画像のように見えますよね。

http://www.vb-user.net/junk/replySamples/2009.08.21.19.59/Layer.zip

それでは都合が悪いので、特定の場所を不透過にしたい…という事なのでしょうか。
引用返信 編集キー/
■40270 / inTopicNo.4)  Re[2]: pictureboxの透過指定について
□投稿者/ tetsuwo (2回)-(2009/08/22(Sat) 17:57:01)
2009/08/22(Sat) 17:59:01 編集(投稿者)
2009/08/22(Sat) 17:58:16 編集(投稿者)
2009/08/22(Sat) 17:57:59 編集(投稿者)

返信ありがとうございます。

No40236 (ぽぴ王子 さん) に返信
>VisualStudio 2008 なので環境が違うかもしれませんが、具体的なコードを
>書いてもらえると助かります。

private void form_Load(object sender, EventArgs e)
{
pictureBox.Top = 0;
pictureBox.Left = 0;
pictureBox.Width = 100;
pictureBox.Height = 100;

Bitmap bg = new Bitmap(@"C:\pic\背景01.bmp");
Bitmap chara = new Bitmap(@"C:\pic\キャラクタ01.bmp");

// フォームの背景設定
BackgroundImage = bg;

// キャラクタ画像に透過色を指定し、pbに設定
chara.MakeTransparent(chara.GetPixel(0, 0));
pictureBox.Image = chara;
}

こういった形で表示しようとしています。

charaの透過色が使われている部分はbgが表示される想定だったのですが、
bgも同時に透過され、フォームのグレーが表示されている状況です。
もちろんcharaの領域外のbgはしっかり表示されています。

説明になっているでしょうか・・・。


No40243 (魔界の仮面弁士 さん) に返信
サンプルソースありがとうございました。

早速EXEを実行しました。理想の表示としては1番目と3番目のチェックボックス
(Form.BakcgroundImage, PictureBox.Image)にチェックが入っている状態
となりますので、参考にさせていただきます。

『"』の画像の白い部分が透過され、尚且つForm.BackgroundImageが透過されずに
『口』が表示される仕組みを勉強させていただきます。

引用返信 編集キー/
■40271 / inTopicNo.5)  Re[3]: pictureboxの透過指定について
□投稿者/ らじうむ (25回)-(2009/08/22(Sat) 18:20:25)
No40270 (tetsuwo さん) に返信
> charaの透過色が使われている部分はbgが表示される想定だったのですが、
> bgも同時に透過され、フォームのグレーが表示されている状況です。
…それってフォームじゃなくてpictureBoxだと思いますよ?
(魔界の仮面弁士さんのソースを見て気づいてるかもしれませんが念のため)
引用返信 編集キー/
■40273 / inTopicNo.6)  Re[4]: pictureboxの透過指定について
□投稿者/ tetsuwo (3回)-(2009/08/22(Sat) 19:34:31)
2009/08/22(Sat) 19:35:09 編集(投稿者)

No40271 (らじうむ さん) に返信
> …それってフォームじゃなくてpictureBoxだと思いますよ?
> (魔界の仮面弁士さんのソースを見て気づいてるかもしれませんが念のため)

お恥ずかしながら気づけませんでした、ご指摘ありがとうございます。

私の上記の方法の場合、charaの透過指定に加えて
PictureBoxの背景色を透過指定すれば解決することが分かりました。
(魔界の仮面弁士さまのサンプルにて画像の白部分が透過する仕組みは分かりませんでしたが・・・
Ping自体の特性なのでしょうか?)

お三方ともアドバイスありがとうございました。

解決済み
引用返信 編集キー/
■40276 / inTopicNo.7)  Re[5]: pictureboxの透過指定について
□投稿者/ 魔界の仮面弁士 (1244回)-(2009/08/23(Sun) 01:28:40)
2009/08/23(Sun) 01:32:52 編集(投稿者)
No40273 (tetsuwo さん) に返信
> (魔界の仮面弁士さまのサンプルにて画像の白部分が透過する仕組みは分かりませんでしたが・・・

実のところ、あの画像に白い部分は一切ありません。

白く見えたとしたら、それは恐らく透過された部分だと思います。
(ツールによって、白く見えたり黒く見えたりするかも知れません)

先の No40243 でも、『透過画像』と書いていますよね。

01「口」で使っているのは、赤(R=FF,G=00,B=00) だけですし、
02「メ」で使っているのは、青(R=00,G=26,B=FF) だけで、
03「゛」で使っているのは、緑(R=00,G=7F,B=0E) だけです。

しかし、あれらの画像の背景部は、アルファ値を完全透過(A=00)にしていますので、
下の画像がそのまま見えるようになっています。
一方、文字部は完全不透明(A=FF)になっているため、下の画像が透けることはありません。
(さらに言えば、文字周辺部はアンチエイリアスのために半透明処理を施してあります)


> Ping自体の特性なのでしょうか?)
PNG ですね、Portable Network Graphics。
発音は同じでも、Ping と書いてしまうと意味が変わってしまいますよ。(^^;


透過画像に対応したソフトを使うと、背景が透明処理されていることが分かるかと思います。
ちなみに私は、Paint.NET というソフトを使用して生成しました。
(同梱しておいた \Images\Layer.pdn ファイルは、Paint.NET のファイルです)

解決済み
引用返信 編集キー/
■40308 / inTopicNo.8)  Re[6]: pictureboxの透過指定について
□投稿者/ tetsuwo (4回)-(2009/08/23(Sun) 22:28:59)
No40276 (魔界の仮面弁士 さん) に返信

画像ファイルの説明、ありがとうございます。
Pingはネットワークですね、最近使用することが多くて間違えてしまいました(汗

当面はbmpとjpgで進めていく予定なので、No40273 の方法を採用しようと思います。
今後はpngのことも調べていけば色々できることが広がりそうですね。

アドバイスありがとうございました。

引用返信 編集キー/
■40312 / inTopicNo.9)  Re[7]: pictureboxの透過指定について
□投稿者/ tetsuwo (5回)-(2009/08/23(Sun) 23:03:57)
No40308 (tetsuwo さん) に返信
> ■No40276 (魔界の仮面弁士 さん) に返信
>
> 画像ファイルの説明、ありがとうございます。
> Pingはネットワークですね、最近使用することが多くて間違えてしまいました(汗
>
> 当面はbmpとjpgで進めていく予定なので、No40273 の方法を採用しようと思います。
> 今後はpngのことも調べていけば色々できることが広がりそうですね。
>
> アドバイスありがとうございました。
>
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -