• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複雑な形状のRegion作成)

CLI .NetFrameworkで複雑な形状のRegion作成が困難なPictureBoxの背景透過処理について

このQ&Aのポイント
  • CLI .NetFrameworkを使用している際に、複雑な形状のBitmapが描画されたPictureBoxの透過処理を行いたい場合、手作業でRegionを設定することは困難です。
  • Bitmapの透明でない領域をRegionに設定する方法があれば、手作業でRegionを設定する必要がありません。
  • また、複数のPictureBoxに対して背景の透過処理をする方法も知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • FAY
  • ベストアンサー率49% (95/193)
回答No.1

質問されてから結構たつのでサンプルを見つけちゃってるかもしれませんが・・・ http://d.hatena.ne.jp/aharisu/20090523/1243077727 に書かれてるようにすると一応できます。 ただ、解説に書かれているように制限がいくつかあるので改良の余地がありますが、 仕組み的には似たような感じになりそうなので参考にはなると思います。

参考URL:
http://d.hatena.ne.jp/aharisu/20090523/1243077727
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Open CV でBitmap描画の高速化

     現在Open CVとVC++2008のC++/CLIを用いてform上のpictureBoxにカメラ画像を表示するプログラムを作成しています。  プログラムは,http://imagingsolution.blog107.fc2.com/blog-entry-91.htmlのサイトの『IplImageのPictureBoxへの描画』の項を参考にさせていただきました。 カメラ画像の描画だけでしたら,問題なく動作しますが,その他の処理を行うと,全体の動作が遅くなってしまいます。 そこで,どうにかして全体の動作速度あげようと,調べているとBitmapの描画は遅いということはわかりました。 しかし,どのようにすればBitmap描画を高速化出来るのかがわかりません... お分かりになる方がいらっしゃいましたら,何卒ご教授お願い致します。

  • 兄弟のpictureboxは透過処理をするには?

    度々質問して申し訳ありません。 Controls.Addで親子にしたpicturebox はちゃんと透過処理してくれるのですが、 同じ親pictureboxの子供たち(兄弟)同士の透過処理が行われません。 違う設定が必要なのでしょうか? 教えていただけますか?よろしくお願いします。 文字数多くて載せられないので、重要であろう箇所のみです。スミマセン。 image = New Bitmap("c:\image.png")'透過部有 iconGraphics = Graphics.FromImage(image) Icon1 = New System.Windows.Forms.PictureBox iconGraphics.DrawImage(image, 0, 0, iconSize, iconSize) PictureBox1.Image = image Icon1.Location = New Point(8, 8) Icon1.Width = iconSize Icon1.Height = iconSize Icon1.BackColor = Color.Transparent PictureBox1.Controls.Add(Me.Icon1) Icon1.BringToFront() Icon1.Image = image

  • vc++ 2005 Pictureboxの透過処理

    お世話になります。 VC 2005で開発しているC++で教えていただきたい事が有ります。 PictureboxBの上にPictureboxAを透過率50%位で重ねて表示したいのですが、 Pictureboxのプロパティ等で一括で指定できないでしょうか? 出来ない場合、画像を一括で透過処理する方法が有りましたら教えていただけないでしょうか ※ ググって、単色を透過するのは、色々見つけたのですが、画像全体を透過する方法を見つけることが出来ませんでした。 現状は単純にファイル(写真)を読み込んで、PictureboxのImageに格納しているだけです。 ※将来的には、PictureboxAをドラッグで移動させたいので、背景画像(PictureboxB)との位相を取る方法以外でお願いいたします。 Bitmap^ PhotBMP = gcnew Bitmap(filename); // この間にサイズ変更&位置合わせの処理が有りますが、記載を省略させていただいております。 PictureboxA->Image = PhotBMP;

  • C# PictureBoxへの描画を行うとメッセージボックスが表示されません。

    いつもお世話になっております。 ふと、PictureBoxに描画をしてみようかと思い Paintイベントに以下のようにして描画を行いました。   myBitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);   Graphics g = Graphics.FromImage(myBitmap);   pictureBox1.Image = myBitmap;      ・      ・(g.FillRectangle(・・・);など)      ・ (myBitmapはBitmap型のグローバル変数です。) PictureBoxは、自由にサイズ変更可能なフォームに貼り付け、四方をanchorで固めています。 そのためサイズが変更されるたびに、描画するときBitmapのサイズも変更しないといけないので この処理を毎回通っています。 (その部分が何だか無駄な気がするのですが、他にいい方法が思いつきませんでした。) ところが、描画はうまくいったのですが、メッセージボックスを出すと そのメッセージボックスが一度Altキーを押さないと表示されません。 色々調べて、ダブルバッファリングというものがあると知りました。 そこでPaintイベントで最初にこの処理をし   Image image = new Bitmap(pictureBox1.Width, pictureBox1.Height);   g = Graphics.FromImage(image); gに描画し終わってから   e.Graphics.DrawImage(image, 0, 0); としてみると、今度はフォームを移動するのにも一瞬フリーズするようになってしまいました。 (あまり深くプログラミングをしたことがないので、理解しきれなくてやり方が悪いのかも知れません・・・) メッセージボックスが表示されないのは、PictureBoxの描画のため 他のコントロールの描画ができていなためだと推測しているのですが どう直していいかわかりません。 どなたか、わかる方がいましたらよろしくお願いします。 <補足> OS:Vista VisualStudio2008 .NET Framework3.5

  • VisualStudioのpictureBox

    VC++2008でC++/CLIでpictureBoxにグラフを描画するプログラムを作成しています。 最大値を200程度にしたいのですが,約180以上の数値を入れるとpictureBoxの上部に点が描画されているようです。(pictureBoxの外側なので,点は見えませんが...) 最大値を200,最小値を0としたら,pictureBoxの最上部が200,最下部が0 になるようなプログラムはどのようにすればよいでしょうか? 座標は左下が原点になるようには設定しています。

  • .NETで画像表示に困ってます

    6.0から.NETに乗り換えたものです picturebox上に別のpictureにある画像を座標を自由にとって描画できるようにしたいのですが、どういう方法がいいのでしょうか? 6.0時代はBitBltで表示していました ソースもつけて教えていただけると嬉しいのですが... 6.0と全然違うのでわかんないんです それと透過pngとかはコピー転送できるのですか? やったことないですが、、、 教えてください

  • photoshopのバッチ処理で背景透過が無効に

    photoshopで複数ファイルのバッチ処理(具体的にはリサイズ)を行ったところ、背景の透過が無効になってしまいました。 背景を投下したPNGファイルをリサイズしたのですが、背景が白になってしまったのです。出力ファイル形式はPNGにしていました。 どうやったら背景の透明を維持したままバッチ処理できるのでしょうか。

  • PBoxのGraphicsをImageに書き込む

    お世話になります PictureBoxを2枚使用して以下の様に現状はなっております。 PictureBox AAは背景となる画像を描画 AA->Image = bmpGazou; PictureBox BBはAAのオーバーレイとして、文字や図形をGraphicsオブジェクトに描画したり編集したりしています。 主にg->FillEllipse等で円を描画しています ※文字や図形以外は透過 やりたいこと 保存用のBMPを作成して、そこにAAとBBを書き込んで、Jpeg保存したい 保存用BMPを定義して Bitmap^ bmp = gcnew Bitmap(ixSize, iySize); Graphics^ g = Graphics::FromImage(bmp); そこにAAを書き込む g->DrawImage(AA->Image,・・・ ここまでは正常にできたのですが、 BBのImageプロパティが未定義なので、g->DrawImageではBBを書き込めませんでした。 GraphicsオブジェクトをBMPに上書き(重ね書き)したいのですが、 どの様にすればよいのか教えていただけないでしょうか。 ↓等も見てはいるのですが、前提条件のBBの使い方が違うので、やり方が判りませんでした。 http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html ※PCの画面上はAAの上にBBが表示され、背景のAA画像に文字や図形を重ねて描画できております。

  •  BitBltでの表示での問題です。

    WindowsAPIでの描画系の質問です。 WindowsAPIで、bitmapファイルを描画するAPI、BitBltがあるのですが、 画像を読み込み、これを表示させると透過処理がないことがわかります。 そこでBitBltで、マスク処理した画像を用意し、表示させることで表示させたくない部分を 透明にさせることができるみたいですが、どうしてそういったことが可能なのでしょうか? bitmapファイルの黒い部分と別のbitmapファイルの白い部分を重ねることでできるのですが なぜ白と黒とで透明になるのか分かりません。 どうしてでしょうか? 以上です。 よろしくお願いします。

  • VB.NET ピクチャーボックスのImageの一部をクリップボードにコピー

    Picturebox1.Image = New Bitmap(Picturebox1.Width, Picturebox1.Height) Dim g As Graphics = Graphics.FromImage(Picturebox1.Image) これ以降 g.DrawLine 等で描画を行っています そして、ピクチャーボックスの一部の領域(矩形)を指定して クリップボードにコピーしたいのですがどうしたらいいでしょうか よろしくお願いします 他のピクチャーボックスにその一部をコピーできるだけでもいいのですが