Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
tr1ve
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 4
#1

Как рисовать сплошные линии независимости от скорости кисти - Android

16.12.2012, 17:50. Просмотров 2177. Ответов 8
Метки нет (Все метки)

Хочу сделать рисовалку на Android, но столкнулся с проблемкой - если рисовать медленно на канве, то получается более-менее цельная кривая(на скриншоте с левой стороны), но если по экрану провести пальцем быстро - прорисовываются только промежуточные позиции(на скриншоте с правой стороны).
Есть идеи как рисовать цельно?

Может нужно использовать не onDraw и onTouchEvent, а какой-то другой способ?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
 
public class CanvasBrushDrawing extends View {
    private Bitmap mBitmapBrush;
    private Vector2 mBitmapBrushDimensions;
 
    private List<Vector2> mPositions = new ArrayList<Vector2>(100);
 
    private static final class Vector2 {
        public Vector2(float x, float y) {
            this.x = x;
            this.y = y;
        }
 
        public final float x;
        public final float y;
    }
 
    public CanvasBrushDrawing(Context context) {
        super(context);
 
        mBitmapBrush = BitmapFactory.decodeResource(context.getResources(), R.drawable.brush);
        mBitmapBrushDimensions = new Vector2(mBitmapBrush.getWidth(), mBitmapBrush.getHeight());
 
        setBackgroundColor(0xffffffff);
    }
 
 
 
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
 
        for (Vector2 pos : mPositions) {
            canvas.drawBitmap(mBitmapBrush, pos.x, pos.y, null);
        }
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
 
        int action = event.getAction();
        switch (action) {
            case MotionEvent.ACTION_MOVE:
                final float posX = event.getX();
                final float posY = event.getY();
                mPositions.add(new Vector2(posX - mBitmapBrushDimensions.x / 2, posY - mBitmapBrushDimensions.y / 2));
                invalidate();
        }
 
        return true;
    }
}
Как видите, рисую кистью(картиной) R.drawable.brush. Пробовал с другим кодом рисовать через drawCircle(), но проблема остается.
Миниатюры
Как рисовать сплошные линии независимости от скорости кисти  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 17:50     Как рисовать сплошные линии независимости от скорости кисти
Посмотрите здесь:

Как рисовать "карандашом" на экране Android
Как рисовать на кнопках Android
Android Толщина линии на canvas
Android Как скорость соединения зависит от скорости интернета?
Можно ли рисовать лупу не во всех фрагментах? Android
Android Как рисовать текст на Canvas во View?
Сложно ли рисовать графику на Джава для Андроида? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fiphiker
17.12.2012, 15:06
  #2

Не по теме:

какую литературу посоветуешь? хочу одну рисовалку сделать, с одной фичей...

tr1ve
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 4
17.12.2012, 15:15  [ТС]     Как рисовать сплошные линии независимости от скорости кисти #3
fiphiker, никакой литературой не пользовался. Просмотрел только вступительные видеоуроки от Lynda - Android App Development with Java Essential Training, а потом только гугл.
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
17.12.2012, 15:17     Как рисовать сплошные линии независимости от скорости кисти #4
Ок, спасибо.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
17.12.2012, 15:45     Как рисовать сплошные линии независимости от скорости кисти #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
есть примеры от андройда
где в одной апликухе показываються разные контролы, приемы и так далее

когда создаешь проект там предлагают создать из примеров
нухный пример называетья google api помойму (там куча всего)
и там есть полностью готовая рисовалка
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
17.12.2012, 15:49     Как рисовать сплошные линии независимости от скорости кисти #6
Во, спасибо что напомнил, сейчас открыл папку android-16 и там столько интерессного)
tr1ve
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 4
17.12.2012, 16:26  [ТС]     Как рисовать сплошные линии независимости от скорости кисти #7
flashok, о, спасибо. Правда, в samples android sdk его не нашел, но исходники есть в интернете.
Для будущих поколений, искать так - TouchPaint.java.
fiphiker
84 / 52 / 4
Регистрация: 08.03.2011
Сообщений: 538
22.12.2012, 21:32     Как рисовать сплошные линии независимости от скорости кисти #8
возник вопрос, как установить прозрачность холста?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 22:52     Как рисовать сплошные линии независимости от скорости кисти
Еще ссылки по теме:

Android В какой программе рисовать мелкие графические элементы для программного интерфейса
Android Рисовать поверх всего
Android Как рисовать графики на Android?
Android Одновременно и рисовать и отслеживать координаты нажатия
Удаление линии Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.12.2012, 22:52     Как рисовать сплошные линии независимости от скорости кисти #9
#88ff2211
88 - прозрачность
ff - красный
22 - зеленый
11 - синий
Yandex
Объявления
22.12.2012, 22:52     Как рисовать сплошные линии независимости от скорости кисти
Ответ Создать тему
Опции темы

Текущее время: 05:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru