사용자가 이미지 크기를 조절할 수있는 응용 프로그램을 작성 중입니다. 아래의 방법으로 문제가 발생한다는 것은 이전 스케일 포인트에서 스케일링이 항상 발생한다는 것입니다.BitmapData로 크기 조절
예를 들어, 이미지의 크기를 조절 한 다음 이미지의 크기를 조절하면됩니다. 내가 원하는 지점으로 되돌리려면 두 번 축소해야합니다.
이 문제에 대한 도움을 주시면 대단히 감사하겠습니다.
잘 보이는private var sourceBMD:BitmapData = testImage.source as BitmapData
private var matrixScaleX:Number = 1;
private var matrixScaleY:Number = 1;
private var baseScaleX:Number = .05;
private var baseScaleY:Number = .05;
private function sourceZoom(zoomType:Boolean = false):void{
var matrix:Matrix = new Matrix();
var matriximage:BitmapData;
if(zoomType){
matrixScaleX = matrixScaleX + baseScaleX;
matrixScaleY = matrixScaleY + baseScaleY;
matrix.a = matrixScaleX;
matrix.d = matrixScaleY
}else{
matrixScaleX = matrixScaleX - baseScaleX;
matrixScaleY = matrixScaleY - baseScaleY;
matrix.a = matrixScaleX;
matrix.d = matrixScaleY;
}
matriximage = new BitmapData(sourceBMD.width, sourceBMD.height, false, 0x0000000);
trace('MatrixScaleX: ' + matrixScaleX);
trace('MatrixScaleY: ' + matrixScaleY);
trace('BaseScaleX: ' + baseScaleX);
trace('BaseScaleY: ' + baseScaleY);
trace('Matrix: ' + ObjectUtil.toString(matrix));
matriximage.draw(sourceBMD, matrix);
testImage.source = matriximage;
}
귀하의 질문에 혼란스러워합니다. 스케일링이 누적되는 문제 (두 번의 "+"클릭 = 10 %, 하나의 "+"및 하나의 "-"는 0 %와 동일)입니까? 또는 누적되지 않습니다 (두 번의 "+"클릭 = 5 %, 하나의 "+"및 하나의 "-"는 -5 %와 같음)? 또는 다른 것? –
정확합니다. 확대를 두 번하면 확대 축소를 세 번 클릭해야합니다. 나는 내가보고있는 것을 정확하게 보여주기 위해 간단한 스크린 캐스트를 가져 왔습니다. http://www.screencast.com/users/rottmanj/folders/Jing/media/bcb6272b-9a73-4a8e-8f2e-51cd675b6981 – Tempname