Построение первых приложений для устройств на базе Android |
Класс Canvas и его методы. Графические примитивы |
Класс Canvas содержит методы для рисования, которые рисуют графические примитивы. Вначале необходимо подготовить кисть для рисования с помощью класса Paint. Класс Paint позволяет установить у графических примитивов цвет, прозрачность, толщину линии, стиль, сглаживание, размер шрифта, обводку и другое. В программе представлены некоторые графические примитивы и их обработка.
_______________MainActivity.java_______________
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import static android.graphics.Paint.Style.STROKE;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawView(this));
// вертикальная ориентация экрана
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// скрыть панель уведомлений
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
class DrawView extends View {
Paint paint;
Resources resources;
private ImageView imageview;
public DrawView(Context context) {
super(context);
paint = new Paint(); // создание экземпляра класса Paint
}
@Override
protected void onDraw(Canvas canvas) {
// настройка холста - прозрачность, красный, зеленый, синий
canvas.drawARGB(255,255,222,173);
// настройка кисти
paint.setStyle(Paint.Style.FILL); // заливка всех графических примитивов
paint.setAntiAlias(true); // режим сглаживания
paint.setStrokeWidth(20); // толщина линии
paint.setColor(Color.RED); // красный цвет кисти
canvas.drawPoint(750, 700, paint); // рисует точку на холсте
paint.setColor(Color.rgb(255, 100, 0)); // цвет рисования из полной палитры
canvas.drawLine(860, 1200, 460, 100, paint); // рисует линию
paint.setColor(Color.rgb(150, 0, 200)); // цвет рисования из полной палитры
canvas.drawCircle(800, 300, 200, paint); // рисует круг
paint.setStyle(STROKE); // убрать заливку
paint.setColor(Color.rgb(100, 0, 255)); // цвет рисования из полной палитры
canvas.drawCircle(600, 1300, 400, paint); // рисует круг
paint.setStyle(STROKE); // убрать заливку
paint.setColor(Color.YELLOW); // желтый цвет кисти
canvas.drawCircle(750, 350, 100, paint); // рисует круг
paint.setStyle(Paint.Style.FILL); // установить заливку
paint.setColor(Color.MAGENTA); // пурпурный цвет кисти
canvas.drawRect(100, 300, 500, 1000, paint); // прямоугольник
paint.setStyle(STROKE); // убрать заливку
paint.setColor(Color.rgb(0, 200, 150)); // цвет рисования из полной палитры
canvas.drawRect(100, 1400, 800, 1800, paint); // прямоугольник
paint.setColor(Color.rgb(0, 0, 0)); // цвет рисования из полной палитры
paint.setTextSize(100); // размер текста
paint.setStrokeWidth(5); // толщина линии
canvas.drawText("BigCamagan.ru", 260, 1330, paint); // рисует текст
paint.setStrokeWidth(20); // толщина линии
paint.setStyle(Paint.Style.FILL); // установить заливку
// Color.argb (прозрачность, красный, зеленый, синий)
paint.setColor(Color.argb(100,255, 0, 0));
// овал 3-го типа в прямоугольнике RectF
RectF oval3 = new RectF(150, 80, 450, 800);
canvas.drawOval(oval3, paint); // рисует овал
// прямоугольник с закругленными углами
RectF rect = new RectF(320, 1050, 730, 1220);
paint.setColor(Color.GRAY);
canvas.drawRoundRect(rect, 30, 30, paint); // радиусы закругления углов
paint.setColor(Color.RED);
paint.setStrokeWidth(5); // толщина линии
canvas.drawLine(200, 1850, 700, 1850, paint); // рисует линию
canvas.drawLine(200, 1850, 450, 1450, paint); // рисует линию
canvas.drawLine(450, 1450, 700, 1850, paint); // рисует линию
paint.setStyle(STROKE); // убрать заливку
paint.setStrokeWidth(20); // толщина линии
paint.setColor(Color.rgb(255, 100, 0)); // цвет рисования из полной палитры
RectF oval1 = new RectF(850, 500, 1050, 1000);
canvas.drawOval(oval1, paint); // рисует овал в области указанного прямоугольника
}
}
}
Некоторые методы класса Canvas drawARGB(), drawRGB() и drawColor() – заполнение холста сплошным цветом. drawArc() – рисует дугу между двумя углами внутри заданной прямоугольной области. drawBitmap() – рисует растровое изображение на холсте. Вы можете изменять внешний вид целевой картинки, указывая итоговый размер или используя матрицу для преобразования. drawBitmapMesh() – рисует изображение с использованием сетки, с помощью которой можно управлять отображением итоговой картинки, перемещая точки внутри неё. drawCircle() – рисует окружность с определенным радиусом вокруг заданной точки. drawLine(s)() – рисует линию (или последовательность линий) между двумя точками. drawOval() – рисует овал на основе прямоугольной области. drawPaint() – закрашивает весь холст с помощью заданного объекта Paint. drawPath() – рисует указанный контур, используется для хранения набора графических примитивов в виде единого объекта. drawPicture() – рисует объект Picture внутри заданного прямоугольника. drawPoint() – рисует точку в заданном месте. drawPosText() – рисует текстовую строку, учитывая смещение для каждого символа. drawRect() – рисует прямоугольник. drawRoundRect() – рисует прямоугольник с закругленными углами. drawText() – рисует текстовую строку на холсте. Шрифт, размер, цвет и свойства отображения текста задаются в соответствующем объекте Paint. drawTextOnPath() – рисует текст, который отображается вокруг определенного контура. drawVertices() – рисует набор треугольников в виде совокупности вершинных точек. rotate() и restore() – вращение холста. scale() и translate() – изменение и перемещение координатной системы. |
Выбери лучшее! allbest |