「●画像合成改」の編集履歴(バックアップ)一覧はこちら
●画像合成改 - (2009/03/22 (日) 01:31:46) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
*情報
作者名:SWinX
引用元:[[なでしこ初心者質問掲示板「画像合成改」>http://www.himanavi.net/cgi/nade-1st/cbbs.cgi?mode=one&number=4114&type=4111&space=15&no=0]]
*概要
不具合を修正した「画像合成」です。
これで、灯火食が黒色以外でも正常に動作します。
*解説
命令「画像合成」の説明文には「OBJ1の左上の色を透過色として扱う」
とありますが、実際には透過色もORされてしまいます。
これはなでしこの不具合と思います。
画像合成命令の内部では
1)マスクを作る[画像マスク作成]
2)マスクでコピー先をくりぬく[画像ANDコピー]
3)コピー元を合成[画像ORコピー]
という手順で実行されるのですが、透過色が黒色で無い場合
2.5)逆マスクでコピー元をくりぬく = 透過色を黒色に変換
が必要です。
※sample-グラフィック-画像処理サンプル-キャラ合成-正統.nakoを参照
で、無いものは作るしかないということで「画像合成改」を作りました。
*解説
*サンプルプログラム
ウィンドウ背景色で画面クリア
キャラ画像とはイメージ
その幅=32
その高さ=32
キャラ画像を青色で画面クリア
線色=黄色。塗り色=黄色。線太さ=1
キャラ画像の2,2から30,30へ円
90,80へ「画像合成」を文字描画
キャラ画像を母艦の100,100へ画像合成
描画処理反映
190,80へ「画像合成改」を文字描画
キャラ画像を母艦の200,100へ画像合成改
*//本体
●画像合成改({グループ}Sを{グループ}DのX,Yへ)
Cとは整数
//マスク画像はSの透過色を黒色、それ以外を白色にしたもの
マスク画像をイメージとして作成
マスク画像→可視はオフ
マスク画像→画像はS→名前
マスク画像の0,0を画像色取得してCに代入
マスク画像をCで画像マスク作成
//ソース画像はSの透明色を黒色に変換したもの
ソース画像をイメージとして作成
ソース画像→可視はオフ
ソース画像→画像はS→名前
マスク画像を画像ネガポジ
マスク画像をソース画像の0,0へ画像ANDコピー
マスク画像を画像ネガポジ
//合成実行
マスク画像をDのX,Yへ画像ANDコピー
ソース画像をDのX,Yへ画像ORコピー
マスク画像→壊す
ソース画像→壊す
----
#comment()
----
*情報
作者名:SWinX
引用元:[[なでしこ初心者質問掲示板「画像合成改」>http://www.himanavi.net/cgi/nade-1st/cbbs.cgi?mode=one&number=4114&type=4111&space=15&no=0]]
*概要
不具合を修正した「画像合成」です。
これで、透過色が黒色以外でも正常に動作します。
*解説
命令「画像合成」の説明文には「OBJ1の左上の色を透過色として扱う」
とありますが、実際には透過色もORされてしまいます。
これはなでしこの不具合と思います。
画像合成命令の内部では
1)マスクを作る[画像マスク作成]
2)マスクでコピー先をくりぬく[画像ANDコピー]
3)コピー元を合成[画像ORコピー]
という手順で実行されるのですが、透過色が黒色で無い場合
2.5)逆マスクでコピー元をくりぬく = 透過色を黒色に変換
が必要です。
※sample-グラフィック-画像処理サンプル-キャラ合成-正統.nakoを参照
で、無いものは作るしかないということで「画像合成改」を作りました。
*解説
*サンプルプログラム
ウィンドウ背景色で画面クリア
キャラ画像とはイメージ
その幅=32
その高さ=32
キャラ画像を青色で画面クリア
線色=黄色。塗り色=黄色。線太さ=1
キャラ画像の2,2から30,30へ円
90,80へ「画像合成」を文字描画
キャラ画像を母艦の100,100へ画像合成
描画処理反映
190,80へ「画像合成改」を文字描画
キャラ画像を母艦の200,100へ画像合成改
*//本体
●画像合成改({グループ}Sを{グループ}DのX,Yへ)
Cとは整数
//マスク画像はSの透過色を黒色、それ以外を白色にしたもの
マスク画像をイメージとして作成
マスク画像→可視はオフ
マスク画像→画像はS→名前
マスク画像の0,0を画像色取得してCに代入
マスク画像をCで画像マスク作成
//ソース画像はSの透明色を黒色に変換したもの
ソース画像をイメージとして作成
ソース画像→可視はオフ
ソース画像→画像はS→名前
マスク画像を画像ネガポジ
マスク画像をソース画像の0,0へ画像ANDコピー
マスク画像を画像ネガポジ
//合成実行
マスク画像をDのX,Yへ画像ANDコピー
ソース画像をDのX,Yへ画像ORコピー
マスク画像→壊す
ソース画像→壊す
----
#comment()
----