Уроки, алгоритмы, программы, примеры

Вход на сайт

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

Спасибо за реализацию, она действительно быстрая. Но не все линии отрисовывает в нужную сторону... Необходимо добавить проверку для случая X-линии if(y1 "<" y0) grad=-grad; и аналогично для Y-линии if(x1 "<" x0) grad=-grad; P.S. На...
Отличные уроки(учу GL по ним), только в renderScene нужно добавить очистку буфера цвета и буфера глубины. При изменении размеров треугольники размножаются)
как исправить это , сделал все по инструкции
Timer1 - выдает ошибку. Использовал IdleTimer1, работает! unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, OpenGLContext, GL, GLU; type { TForm1 } TForm1 =...
в коде присутствуют ошибки! // Считываем координаты procedure TForm1.getCoords(Sender: TObject); var j1:longint; begin n:= StrToInt(Edit2.Text); //число точек s1:=Edit1.Text; s2:=''; i := 1; j:=1; k:=0...

Счетчики и рейтинг

Яндекс.Метрика Рейтинг@Mail.ru
Заказать ssd диски для ноутбука.
Среда программирования: 
Eclipse

Рисование под андроид не представляет собой ничего сложного. Для разбора данного урока вам следует установить Android SDK на базе Eclipse и иметь базовые навыки работы с языком программирования Java.

Установка среды программирования

Для начала разберемся с установкой среди программирования. Все нижеприведенные действия выполняются в Eclipse+Android SDK.
Готовую сборку можно скачать с developer.android.com, либо же найти плагин ADT под Eclipse. Новичкам советуется воспользоваться первым вариантом, чтобы не заморачиваться с установкой дополнительных плагинов под Eclipse и не заниматься настройкой самой среды программирования.
В обоих случаях у пользователя будет доступ ко всем необходимым API библиотекам для разработки под Android.
В готовую сборку также входит эмулятор для тестирования решений, но советуется тестировать на настоящем девайсе, так как эмулятор не может предусмотреть все аспекты работы настоящего устройства.

Основы программирования под Android

В самом общем случае, главный класс должен наследоваться от Activity и переопределять метод onCreate (что мы в нашем коде и сделаем). В onCreate описываются действия, воспроизводимые при запуске приложения, например, подключение xml файла, в котором описан внешний вид программы. Так как это лишь вводная статья, мы опустим некоторые детали переопределения методов и ограничимся лишь onCreate'ом. На самом же деле, следует переопределять и методы onRestore, onPause, onStop, которые обрабатывают остановку приложение, сворачивание приложения, запуск после сворачивая и так далее. Мы же предположим, что приложение сворачиваться не будет.

Рисование

В нашем проекта мы отказались от использования xml файла для задания внешнего вида приложения. Вместо это мы создали класс Drawer, наследующий класс View. Класс View -- это стандартный ADT класс, позволяющий на нем рисовать благодаря переопределению метода onDraw, что мы и реализовали в коде.

Так же в методе onDraw мы использовали следующие классы:
1) Canvas -- стандартный класс, содержащий все общие методы для рисования.
2) Paint -- содержит всю необходимую информацию для отрисовки графических объектов, т.е. более специальный, чем Canvas, такую как стили, цвета и так далее. С помощью данного класса можно задавать шрифты, специальные эффекты и многое другое, используемое для рисования. Например метод setAntiAlias задает сглаживание, setColor -- задает цвет, drawCirlce -- отрисовка круга и так далее.

Код

Привожу пример реализации класса Drawer:

package com.example.testpaint;
 
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
 
public class Drawer extends View{ // наследуем от View
    public Drawer(Context context) {
        super(context); // в конструкторе вызываем конструктор класса-родителя
    }  
    @Override
    protected void onDraw(Canvas c){
	    super.onDraw(c);
 
	    Paint paint = new Paint(); // создаем экземпляр класса Paint
	    paint.setStyle(Paint.Style.FILL); // используем заливку во всех графических примитивах
 
	    // закрашиваем всё белым цветом
	    paint.setColor(Color.WHITE); // указываем, что используем белый цвет
	    c.drawPaint(paint);
 
	    // Рисуем зеленый круг
	    paint.setAntiAlias(true); // задаем режим сглаживания
	    paint.setColor(Color.GREEN); // выбираем зеленый цвет
	    c.drawCircle(450, 30, 25, paint); // рисуем круг
 
	    // Рисуем черный прямоугольник
	    paint.setColor(Color.BLACK); // выбираем черный цвет
	    c.drawRect(20, 200, 460, 230, paint); // рисуем прямоугольник
 
	    // Рисуем текст
	    paint.setColor(Color.BLUE); // указываем, что используем синий цвет
	    paint.setStyle(Paint.Style.FILL); // используем заливку
	    paint.setAntiAlias(true); // режим сглаживания
	    paint.setTextSize(30); // задаем размер текста
	    c.drawText("Текст", 30, 200, paint); // задаем текст и его координаты
 
	    // восстанавливаем холст
	    c.restore();
    }
}

И пример главного класса:

// MainActivity.java
package com.example.testpaint;
 
import android.app.Activity;
import android.os.Bundle;
 
public class MainActivity extends Activity { // наследуем от Activity
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // вызываем функцию onCreate класса-родителя
        Drawer d = new Drawer(this); // создаем экземпляр нашего класса
        setContentView(d); // и устанавливаем отображение нашего класса
        //setContentView(R.layout.main);
    }
}

В MainACtivity.java нам достаточно создать экземпляр класса Drawer и отобразить его.

Пример работы:

Таким образом, с помощью элементарных операций мы смогли нарисовать примитивы под Android.

Прикрепленный файлРазмер
testPaint.zip1.17 Мб