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

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

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

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

16.12.2012, 17:50. Просмотров 2228. Ответов 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
86 / 54 / 4
Регистрация: 08.03.2011
Сообщений: 542
17.12.2012, 15:17     Как рисовать сплошные линии независимости от скорости кисти #4
Ок, спасибо.
flashok
86 / 88 / 1
Регистрация: 14.02.2009
Сообщений: 293
17.12.2012, 15:45     Как рисовать сплошные линии независимости от скорости кисти #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
есть примеры от андройда
где в одной апликухе показываються разные контролы, приемы и так далее

когда создаешь проект там предлагают создать из примеров
нухный пример называетья google api помойму (там куча всего)
и там есть полностью готовая рисовалка
fiphiker
86 / 54 / 4
Регистрация: 08.03.2011
Сообщений: 542
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
86 / 54 / 4
Регистрация: 08.03.2011
Сообщений: 542
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

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

Или воспользуйтесь поиском по форуму:
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     Как рисовать сплошные линии независимости от скорости кисти
Ответ Создать тему
Опции темы

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