掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
色の取得と描画の高速化 (ID:40482)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Canvas.Pixelsは1ピクセルずつ読み書きする関数で非常に遅いので 画像の内容をいじりたい場合はTBitmap.ScanLineで直接メモリアクセスするのが普通です。 また「元の画像の各ピクセルを、回転後の座標に移す」というやり方だと 同じ座標に重ねて描画したり、逆に何も描画されない「隙間」ができたりして品質がよろしくないです。 (同じ点を2回ずらして描画しているのも、その隙間を埋めようとしてのことだと思いますが) こういう場合考え方を逆にして「回転後の各ピクセルが、元の画像のどこにあたるか」を調べて移していくといいです。 // (tx, ty) は回転後の画像上の座標、(tw, th) は回転後の大きさ for ty := 0 to th - 1 do begin for tx := 0 to tw - 1 do begin // ここで(tx, ty)を原点周りに逆方向に回転させて(x, y)を求める <回転後のビットマップ>.ScanLine[ty][tx] := <元のビットマップ>.ScanLine[y][x]; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.