Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 25 июн 2018, 22:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 10 мар 2014, 03:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1396
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом уроке:


- используем матрицу канвы для преобразований




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 29 май 2017, 23:22, всего редактировалось 5 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 окт 2014, 22:30 

Зарегистрирован: 13 окт 2014, 22:28
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Если указать точку опоры масштабирования в scale, то относительно неё происходит масштабирование.
А что если предварительно холст переместить, т.е. выполнить функцию translate с некими параметрами, то вместе с этим переместиться ли точка опоры масштабирования или же нет?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 ноя 2015, 14:45 

Зарегистрирован: 25 янв 2015, 18:57
Сообщений: 42
Благодарил (а): 9 раз.
Поблагодарили: 2 раз.
zm_sansan писал(а):
Если указать точку опоры масштабирования в scale, то относительно неё происходит масштабирование.
А что если предварительно холст переместить, т.е. выполнить функцию translate с некими параметрами, то вместе с этим переместиться ли точка опоры масштабирования или же нет?

zm_sansan, по идее должна, Вы же предварительно в основную матрицу(матрицу канвы) записываете преобразование перемещения, т.е. теперь все преобразования будут вестись относительно новой матрицы. По крайней мере в OpenGL так. Там в качестве "канвы" выступает мировая система координат(CW). А тут я не проверял.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 24 ноя 2015, 07:59 

Зарегистрирован: 23 сен 2013, 10:51
Сообщений: 54
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
danek130995 писал(а):
zm_sansan писал(а):
Если указать точку опоры масштабирования в scale, то относительно неё происходит масштабирование.
А что если предварительно холст переместить, т.е. выполнить функцию translate с некими параметрами, то вместе с этим переместиться ли точка опоры масштабирования или же нет?

zm_sansan, по идее должна, Вы же предварительно в основную матрицу(матрицу канвы) записываете преобразование перемещения, т.е. теперь все преобразования будут вестись относительно новой матрицы. По крайней мере в OpenGL так. Там в качестве "канвы" выступает мировая система координат(CW). А тут я не проверял.

:D больше года прошло


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 14 июн 2018, 20:56 

Зарегистрирован: 14 июн 2018, 20:50
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите пжслт, как можно сделать, чтобы цвет менялся в анимации без движения. Например мне надо поменять цвет новогодних шаров. И я никак не могу сделать, чтобы цвет менялся. Привожу кусок елки с шарами.

Вот мой код:
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);
}

}
}

}


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB