スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- | | スポンサー広告

画像の部分拡大

前回とはチガウやり方で、マウスカーソル周辺部を拡大表示するサンプルを作ってみました。




拡大して表示とはいうものの、今回は厳密に言うと拡大してません。

どういうコトかってーと、元々大きな画像をシンボル化して最初はソレを縮小したものを表示しています。マウス周辺部だけ元の大きさで表示してるので一見拡大してるように見えるという寸法デス。

拡大画像表示は、BitmapData#drawを使ってマス。コレのパラメータのMatrixを指定して拡大することもできるのですが、BitmapData#drawは変換がかかったシンボルをソースにしてもソレを無効にして実行されるので、今回のケースではMatrixでは拡大してません。ので、フラッシュに取り込んだサイズで切り取り/表示されます。

スクリプトは、以下のようになってマス。

import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Rectangle;
// 元画像のサイズ
var orgWidth:Number = 1024;
var orgHeight:Number = 768;
// 元画像と表示画像の比
var wRatio:Number = orgWidth / image_mc._width;
var hRatio:Number = orgHeight / image_mc._height;

// 切り取りサイズ
var windowWidth:Number;
var windowHeight:Number;

// 切り取り窓
var depth:Number = _root.getNextHighestDepth();
var window_mc:MovieClip = _root.createEmptyMovieClip("window_" + depth, depth);
// 設定ボタン
test_btn.onRelease = setup;

setup();

// セットアップ
function setup() {
windowWidth = Number(width_txt.text);
windowHeight = Number(height_txt.text);
}

// フレーム毎の処理
function onEnterFrame() {
if (_xmouse < image_mc._x
|| _xmouse > (image_mc._x + image_mc._width)
|| _ymouse < image_mc._y
|| _ymouse > (image_mc._y + image_mc._height)) {
// 画像範囲外なら切り取り窓は表示しない
window_mc._visible = false;
// マウスカーソル表示
Mouse.show();
} else {
// 切り取り窓位置調整
window_mc._x = _xmouse - windowWidth / 2;
window_mc._y = _ymouse - windowHeight / 2;
// 切り取った画像を保持するビットマップデータ
var bitmap:BitmapData = new BitmapData(windowWidth,
windowHeight);
// 切り取る矩形
var rect:Rectangle = new Rectangle(0,
0,
windowWidth,
windowHeight);
// 切り取り時変換
var matrix:Matrix = new Matrix();
matrix.tx = -(_xmouse - image_mc._x) * wRatio
+ windowWidth / 2;
matrix.ty = -(_ymouse - image_mc._y) * hRatio
+ windowHeight / 2;
// 切り取り
bitmap.draw(image_mc,
matrix,
new ColorTransform(),
"normal",
rect,
false);
window_mc.attachBitmap(bitmap, 1);
// マウスカーソル非表示
Mouse.hide();
// 切り取り窓表示
window_mc._visible = true;
}
}
image_mcは表示画像デス。実際は1024×768の画像を256×192で表示しています。
切り取り時の変換でMatrix.tx, Matrix.tyでゴチャゴチャとセットしてますが、コレはBitmapData#draw時には画像が元のサイズで扱われてしまうため、元のサイズでのオフセット位置を算出しています。
スポンサーサイト

テーマ:Flash - ジャンル:コンピュータ

2007.03.23 | | Comments(0) | Trackback(0) | Flash/ActionScript

コメント

コメントの投稿


秘密にする

«  | HOME |  »

プロフィール

HundredthMonkey

Author:HundredthMonkey
プログラマ。

ブロとも申請フォーム

この人とブロともになる

メールフォーム

名前:
メール:
件名:
本文:

ブログ内検索


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。