プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

以前、PictureBoxの透過に関して、下記アドバイスをいただき、
無事作成できたのですが、
今度は、PictureboxBの上にあるPictureboxA(透過率50%)の画像を
4点ある頂点を再指定して、変形させたいのですが・・・
http://oshiete.goo.ne.jp/qa/8662361.html

Dxlib OpenGL OpenCVなどを使用するサンプルは多数見かけるのですが、
標準の機能だけで、画像の変形はできますでしょうか。

【やりたいことのイメージ】
PictureboxBに町並みの画像
PictureboxAにビルやマンションの画像
PictureboxBに町並みの画像の上にPictureboxAの建物を半透明で表示して、
その建物の画像を移動とパースで背景の任意の位置に配置する。
※ 現在は上記で教わった手法にて、半透明と移動までできています。
※ rectangleだけだと平行四辺形までの変形しかできないようなので、
  頂点指定もしくは、何らかの係数で値を変えると変形するのでも構いませんので、
  変形させる方法がございましたら教えていただけないでしょうか。
  よろしくお願いいたします。

A 回答 (1件)

先の TransparenetPictureBox の回答者の物です。

質問者さんがお使いになっているのは、純粋な C++ ではなくて C++/CLI という物なのですが、これは C# と同じ枠組を使ってプログラムを書く環境になっています。特に Web 上では C++/CLI よりも C# による記事の方が充実しているので、何か分からない事があれば C# の記事を探してそれを C++/CLI に翻訳する (或いは C# の .dll にしてそれを C++/CLI から利用する) というのも有効な一つの手です。(既に御存知でしたら済みません。)

英語とか C# とかでも OK ですか? その様な変換は perspective transformation だとか perspective deformation だとかいうのですが、"C# perspective" などで検索してみると幾らか出てきます。

やはり、標準の機能ではその様な変換には対応していない様です。標準では線形変換だとか精々2次元のアフィン変換しかないので、矩形は常に平行四辺形になります。(台形の形にするには perspective 変換 (~3次元アフィン変換+投射) だとかしなければならないんだった様に思います。)すると、自分で書くか、何処か別の所から持ってくるしかありません。

* 例えば以下でサンプルコードをダウンロードできます
http://www.codeproject.com/Articles/36145/Free-I …
(ダウンロードには会員登録が必要ですが、このサイトは昔からある良いサイトなので登録して損はないです)
↑の簡単な使い方の例は以下にあります
http://stackoverflow.com/questions/5730236/persp …

* 他にも下の様なページもありましたが、これはサンプルがリンク切れ?になっていますね…
http://social.msdn.microsoft.com/Forums/vstudio/ …

* Direct 3D が使える環境では以下のような方法もあります
http://msdn.microsoft.com/en-us/library/windows/ …
(しかし C++/CLI の System.Windows.Forms 上で使うのは色々複雑だったような気が…。最近では XNA Framework が推奨されている様で、これを System.Windows.Forms 上で使う方法を調べれば良いのでしょうかね。)
    • good
    • 0
この回答へのお礼

akinomyoga様

回答ありがとうございます。

実は、akinomyogaさんに直接聞ければ、良い回答をいただけると思っていたんです。
でも、ここは、個人指定で質問できないので、
やきもきしてました。

今回の質問もakinomyogaさんの目に止まり、的確な回答をいただけ、
本当に助かりました。

お礼日時:2014/07/17 08:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!