DOBON.NET DOBON.NETプログラミング掲示板過去ログ

pictureBox.Imageをクリップボードへ転送

環境/言語:[C#]
分類:[.NET]

いつも勉強させてもらっています。
実は
Clipboard.SetDataObject(pictureBox1.Image,true);
のようにしてpictureBoxのImageをクリップボードへ転送しているのですが
pictureBoxのImageが透明色でクリップボードへ転送すると
クリップボードでは本来透明色であるはずのものが青色になってしまいます。
MakeTransparentを使って透明色の指定をしても結果は同じでした。
何か理由でもあるのでしょうか?
教えて頂ければ幸いです。
> Clipboard.SetDataObject(pictureBox1.Image,true);
> のようにしてpictureBoxのImageをクリップボードへ転送しているのですが
> pictureBoxのImageが透明色でクリップボードへ転送すると
> クリップボードでは本来透明色であるはずのものが青色になってしまいます。

本当に青色になっているか確認してください。アプリケーションを使ってクリップボードから取り出した時、背景色が青だっただけかもしれません。もし間違いなければ、お書きになったコードを教えてください。
■No4316に返信(管理人さんの記事)
>> Clipboard.SetDataObject(pictureBox1.Image,true);
>>のようにしてpictureBoxのImageをクリップボードへ転送しているのですが
>>pictureBoxのImageが透明色でクリップボードへ転送すると
>>クリップボードでは本来透明色であるはずのものが青色になってしまいます。
> 
> 本当に青色になっているか確認してください。アプリケーションを使ってクリップボードから取り出した時、背景色が青だっただけかもしれません。もし間違いなければ、お書きになったコードを教えてください。

ご回答ありがとうございます
コードは以下の通りになります
//フォームのLoadイベントハンドラ
private void Form5_Load(object sender, System.EventArgs e)
{
  //150×150の大きさのイメージをImageプロパティに設定する
    pictureBox1.Image = new Bitmap(150, 150);
}
private void button1_Click(object sender, System.EventArgs e)
{
  //Imageプロパティに設定されているイメージのGraphicsオブジェクトを取得
    Graphics g = Graphics.FromImage(pictureBox1.Image);
  //イメージに描画する
    //楕円を描画
    g.DrawEllipse(Pens.Red,10, 10, 100, 100);
   //背景が青色になってしまっているため長方形を描く
    g.FillRectangle(Brushes.Transparent,
                  10, 10, 100, 100);
  //Graphicsを破棄する
    g.Dispose();
  //pictureBoxを再描画する
    pictureBox1.Invalidate();
}
//クリップボードにコピー
private void button2_Click(object sender, System.EventArgs e)
{
    Clipboard.SetDataObject(pictureBox1.Image, true);
}
このようにしてクリップブックを見てみると画像の通りです。
WORDや他のソフトに貼り付けても同じです。
ちなみに関係ないかもしれませんがWinXp proを使っております。
コードに誤りがあるのでしょうか?それとも他の設定なのでしょうか?
皆目検討がつきません。宜しくお願い致します。
(この記事にはファイル"clipbrd.JPG"が添付されていましたが、削除されました。)
ニュースグループを調べてみたところ、同じような書込みがありました。

・Transparent picture to Clipboard!
http://groups.google.co.jp/groups?hl=ja&lr=&ie=UTF-8&inlang=ja&threadm=150b8982.0309081305.2ba383d6%40posting.google.com

また、次のページでも少し触れられているようです。

・The Code Project - VSNet Resource Editor Addin
http://www.codeproject.net/csharp/vsnetresourceeditor.asp

具体的な解決法は、残念ながら、私にはよく分かりません。

DOBON.NET | プログラミング道 | プログラミング掲示板