2011年8月28日日曜日

マクロメディア改めアドビに嵌められた



結局色々やったがまだ解決できてなかったと判明。


結論からいうと、最終的に、まっとうなやり方ではαは取れないと判明した(<- flash)


ただし力業でとることは可能


日本語でこの手のリソースがまったく書かれてないのでここに書いてみる。


誰かgoogleからやってきたりするだろ


http://blog.xsive.co.nz/archives/49


ここからScreenWeaverのソースとかまでたどって言ったのだが.....








前提条件として




  • ATL, OLEとか一応使えてて、Flash.ocxから Flash::IShockwaveFlash は取得できてること

  • IViewObject (IViewObjectEx とか)も何だか知ってること


んでどうやるかというと




  • flashにSetBGColor("FFFFFFFF");

  • shockwaveからIViewObject::DrawにてどっかのDCへ描画

  • flashにSetBGColor("00000000");

  • shockwaveからIViewObject::DrawにてもういっこのDCへ描画


んで、上のDCふたつを比較すると、αがかかっているところが色がちがいます。


なので、それぞれのピクセルを順にみてってαを計算して,,,,,おそらく32bppで描画してるかハズなので, αが入るべき、最上位バイトへ書き込んでやって、UpdateLayeredWindowすれば桶





ちなみに前のバージョンのFlashPlayerのActiveXでは取れるらしい。何それ。


手元にあったマシンでちゃんと動くのがあったからびっくりしてたらver.8にしたら動かないでやんの。超うんこ


うんこーうんこーうんこー


これで1週間嵌まっている俺にマクロメディアは一週間分の給料をくれたりしない,,よなぁ普通。


つーかここまではまったにも関わらず、つぎのflash9とかでは直ってたりするんだろ?これ


参考ソースはこれ


https://secure.sourcesecure.co.uk/trac/osflash/screenweaver/browser/three/trunk/src/engine/RD_W2KALPHA.H


困ってる人その1


http://forums.swishzone.com/lofiversion/index.php?t27370.html





0 件のコメント: