Страница 1 из 1

Урок 146. Рисование. Canvas-преобразования. Методы save и restore.

Добавлено: 10 мар 2014, 03:00
damager82
В этом уроке:
- используем матрицу канвы для преобразований


Click here to read this article!

Re: Урок 146. Рисование. Canvas-преобразования

Добавлено: 13 окт 2014, 22:30
zm_sansan
Если указать точку опоры масштабирования в scale, то относительно неё происходит масштабирование.
А что если предварительно холст переместить, т.е. выполнить функцию translate с некими параметрами, то вместе с этим переместиться ли точка опоры масштабирования или же нет?

Re: Урок 146. Рисование. Canvas-преобразования

Добавлено: 23 ноя 2015, 14:45
danek130995
zm_sansan писал(а):Если указать точку опоры масштабирования в scale, то относительно неё происходит масштабирование.
А что если предварительно холст переместить, т.е. выполнить функцию translate с некими параметрами, то вместе с этим переместиться ли точка опоры масштабирования или же нет?
zm_sansan, по идее должна, Вы же предварительно в основную матрицу(матрицу канвы) записываете преобразование перемещения, т.е. теперь все преобразования будут вестись относительно новой матрицы. По крайней мере в OpenGL так. Там в качестве "канвы" выступает мировая система координат(CW). А тут я не проверял.

Re: Урок 146. Рисование. Canvas-преобразования

Добавлено: 24 ноя 2015, 07:59
Night_Scream
danek130995 писал(а):
zm_sansan писал(а):Если указать точку опоры масштабирования в scale, то относительно неё происходит масштабирование.
А что если предварительно холст переместить, т.е. выполнить функцию translate с некими параметрами, то вместе с этим переместиться ли точка опоры масштабирования или же нет?
zm_sansan, по идее должна, Вы же предварительно в основную матрицу(матрицу канвы) записываете преобразование перемещения, т.е. теперь все преобразования будут вестись относительно новой матрицы. По крайней мере в OpenGL так. Там в качестве "канвы" выступает мировая система координат(CW). А тут я не проверял.
:D больше года прошло

Re: Урок 146. Рисование. Canvas-преобразования. Методы save

Добавлено: 14 июн 2018, 20:56
Екатерина.
Подскажите пжслт, как можно сделать, чтобы цвет менялся в анимации без движения. Например мне надо поменять цвет новогодних шаров. И я никак не могу сделать, чтобы цвет менялся. Привожу кусок елки с шарами.

Вот мой код:
package ru.startandroid.kusok_yelki;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawView(this));
}
class DrawView extends View {

Paint p;
Paint p1;
Path path1;
Path path6;
Path path7;
int i=1;

public DrawView(Context context) {
super(context);
p = new Paint();
p.setStrokeWidth(10);
p.setStyle(Paint.Style.STROKE);

p1 = new Paint();

path1 = new Path();
path6 = new Path();
path7 = new Path();

}

@Override
protected void onDraw(Canvas canvas) {
canvas.drawARGB(80, 102, 204, 255);

// очистка path1
path1.reset();

// треугольник
path1.moveTo(160, 870);
path1.lineTo(360, 730);
path1.lineTo(560, 870);
path1.lineTo(160, 870);
path1.close();

// рисование path1
p.setColor(Color.GREEN);
p.setStyle(Paint.Style.FILL_AND_STROKE);
canvas.drawPath(path1, p);

// очистка path6
path6.reset();

//рисование шаров красного цвета
path6.addCircle(230, 905, 35, Path.Direction.CW);
path6.addCircle(490, 905, 35, Path.Direction.CW);
path6.close();
for (int i = 1; i < 25; i++) {
p1.setColor(Color.RED);
p1.setStyle(Paint.Style.FILL_AND_STROKE);
canvas.drawPath(path6, p1);
}

// очистка path6
path6.reset();

//рисование шаров синего цвета
path7.addCircle(230, 905, 35, Path.Direction.CW);
path7.addCircle(490, 905, 35, Path.Direction.CW);
path7.close();
for (int i = 1; i < 10; i++) {
p1.setColor(Color.BLUE);
p1.setStyle(Paint.Style.FILL_AND_STROKE);
canvas.drawPath(path7, p1);
}

}
}

}

Re: Урок 146. Рисование. Canvas-преобразования. Методы save и restore.

Добавлено: 24 сен 2021, 19:09
Rolik
getMatrix() deprecated в API 16 (2012г).