canvas concat matrix
public class ConcatMatrixActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(new ConcatMatrixView(this)); } } public class ConcatMatrixView extends View { private Matrix matrix = new Matrix(); private Paint bgPaint = new Paint();
public ConcatMatrixView(Context context) {
super(context);
matrix.setScale(2f, 2f);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
bgPaint.setColor(Color.RED);
canvas.drawRect(0, 0, 100, 100, bgPaint);
canvas.save();
canvas.concat(matrix);
canvas.drawRect(100, 100, 200, 200, bgPaint);
canvas.restore();
canvas.drawRect(400, 400, 500, 500, bgPaint);
}
} 상기 코드는 matrix의 x와 y 좌표를 두 배로 늘렸다.변경 효과는 다음과 같습니다.
concat 없이 canvas.drawRect(100, 100, 200, 200, bgPaint);(100,100),(200,200)의 구역 아래에 직사각형을 그립니다.마릭스를 실행했으니까.setScale(2f, 2f) 그래서 matrix의 x와 y 좌표가 두 배로 늘어났다.이때 concat의 작용으로 canvas.drawRect(100,100,200,200,bgPaint)는 (200,200),(400,400)의 구역에 직사각형을 그렸다.같은 이치로 마릭스에 대한 변환을 마릭스로 바꾸면setScale(2f, 2f)을 matrix로 변경합니다.setTranslate(100f, 100f)의 효과는 다음과 같습니다.
x축과 y축 좌표는 모두 100개의 픽셀을 이동했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.