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

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

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

Re[3]: PictureBoxでの一部色がおかしくなる。


(過去ログ 118 を表示中)

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

■69584 / inTopicNo.1)  PictureBoxでの一部色がおかしくなる。
  
□投稿者/ ANM (1回)-(2014/01/10(Fri) 00:29:03)

分類:[VB.NET/VB2005 以降] 

使用言語:VB.NET
開発環境:VisualBasic 2010 Express

指定した範囲のデスクトップをキャプチャするソフトを作っているのですが、
#0d0b0cの色RGBで言えば 13,11,12の色が透明になります。

詳しく言うと、PNGで保存した場合は透過。
BMPで保存した場合は完全な黒色になるようです。
透明化(TransparencyKey)を設定していますが、
ControlDarkDarkを設定しているのでまた違う色のようです。

試しに透明化を何も設定しないで、ウィンドウの背景色を問題の色に設定してキャプチャーしたところ
完全に透明な画像が保存されました。
PictureBoxに表示する時には問題がないので保存するときに問題があるのかと考えていますが
解決方法がわかりません。

以下一部ソースを添付させていただきます。

Dim bmp As New Bitmap(Form1.Width - 16, Form1.Height - 64 - 23)
Dim g As Graphics = Graphics.FromImage(bmp) Color.Empty
g.CopyFromScreen(New Point(Form1.Location.X + 8, Form1.Location.Y + 56), New Point(0, 0), bmp.Size)
Dim appPath As String = System.AppDomain.CurrentDomain.BaseDirectory
Form4.PictureBox1.Image = bmp
Form4.PictureBox1.Image.Save(appPath + "img.png", Imaging.ImageFormat.Png)

よろしくお願いします。

引用返信 編集キー/
■69604 / inTopicNo.2)  Re[1]: PictureBoxでの一部色がおかしくなる。
□投稿者/ えぴす (1回)-(2014/01/11(Sat) 18:56:30)
http://rucio.cloudapp.net/ThreadList.aspx
VBにはVBの専門家がおりますよ






引用返信 編集キー/
■69606 / inTopicNo.3)  Re[2]: PictureBoxでの一部色がおかしくなる。
□投稿者/ Azulean (256回)-(2014/01/11(Sat) 20:54:07)
VB.NET に限らず、.NET というか、GDI+ で発生する現象のようですね。
海外でもこの色に関して現象を取り上げておられる方がいらっしゃいますが、メカニズムまでは把握していません。
https://www.google.co.jp/search?hl=ja&q=0c0b0d+copyfromscreen&lr=lang_ja#hl=ja&q=0d0b0c+copyfromscreen

特に理由がないのであれば、Bitmap 作成時にデフォルトの PixelFormat.PixelFormatArgb32 ではなく、PixelFormat.Format24bppRgb と指定することで回避することはできます。
(幅・高さの次の引数を省略すると、Argb32 扱いになります)
引用返信 編集キー/
■69607 / inTopicNo.4)  Re[3]: PictureBoxでの一部色がおかしくなる。
□投稿者/ ANM (2回)-(2014/01/12(Sun) 12:32:18)
No69604 (えぴす さん) に返信

そのようなサイトもあるのですね。
機会があれば利用させていただきます。
ありがとうございました。

No69606 (Azulean さん) に返信

結局は原因不明みたいな感じなんですね。
PixelFormat.Format24bppRgbと設定したところ、
完全な黒色にはなってしまうみたいですね。
PNGでも黒色で保存してくれるので暫くはこれで通そうかと思います。
ありがとうございます。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -