プログラミング工房
TOP
Flex基本
開発環境 JavaScript連携 PHP連携1 PHP連携2(AMFPHP) ウィンドウ ボタンスキン 矩形スキン ローカルファイル(テキスト) F5等の対策 ローカルファイル(イメージ) ダウンロード、アップロード 1枚の画像のカラーを変更 時間のかかる計算処理 外部SWFの読込み
Flexで3D
Flexだけで3D Papervision3Dを使ってみる 3Dオブジェクト カメラ、前後判定の工夫しました 自由な形状を作成
Flexでクラス
Class1(白黒ゲームの盤) Class2(白黒ゲームのプレイヤー) Class3(プレイヤーを外部SWF)
PHP
共通関数1
Flexの作品
お問合せの説明 サンプルのソース表示の説明 分子構造の表示(PDBファイル) マンデルブロ集合の画像作成 swf参加型白黒ゲーム(Reversi) ストップウォッチ WEB素材
AIR
AIRを使ってみる ソースファイルのHTML変換を作る
etc.
マンデルブロ集合のギャラリー ジュリア集合のギャラリー wonderflを使ってみました お問合せ

Flex4基本-1枚の画像のカラーを変更

■2011.03.28:作成
サンプル サンプルのソース

ColorTransformを使って画像の色を変更

分子構造の表示(PDBファイル) で1枚のイメージで原子の色を変更できるように考えていて
「ColorTransform」を使用すれば出来るので試して見ました。

一番簡単な使用方法は白黒イメージを用意して白または黒の部分を指定したカラーに
変更できれば、色毎にイメージを作成しなくてよくなります。
ColorTransformの実行結果
上段が黒い部分を指定カラーに変更した例です。
 fncSetColor関数、使用例:fncSetColor(img,0xff0000);
  指定カラーをRGBに分解して、各ピクセルのRBG値にその分解した値を加えてます。
  白は各RGB値は255以上になりませんから、黒い部分だけ指定色になります。

下段が白い部分を指定カラーに変更した例です。
 fncSetColor2関数、使用例:fncSetColor2(img,0xff0000);
  指定カラーの補色をRGBに分解して、各ピクセルのRBG値からその分解した値を
  引いています。(この説明は正しくないかも?)
  黒は各RGB値は0以下になりませんから、白い部分だけ指定色になります。
//指定イメージの黒い部分を指定色に変更
private function fncSetColor(img:BitmapImage, icol:uint):void {
    var ir:uint = icol / (256 * 256); //カラーをRGBに分解
    var ig:uint = (icol / (256))-ir*256;
    var ib:uint = icol % 256;
    //イメージの黒色部分を指定カラーに変更
    img.transform.colorTransform= 
            new ColorTransform(1.0,1.0,1.0,1.0, ir, ig, ib,0);
}
//指定イメージの白い部分を指定色に変更
private function fncSetColor2(img:BitmapImage, icol:uint):void {
    var ir:uint = icol / (256 * 256); //カラーをRGBに分解
    var ig:uint = (icol / (256))-ir*256;
    var ib:uint = icol % 256;
    //イメージの白色部分を指定カラーに変更
    img.transform.colorTransform= 
            new ColorTransform(1.0, 1.0, 1.0, 1.0, 
            ir-255, ig-255, ib-255,0);
}
サンプルにはColorTransformの全てのパラメータを指定できるものを付けました。

プログラミング工房