Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

16.12.2012, 17:50. Просмотров 2274. Ответов 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(), но проблема остается.
0
Миниатюры
Как рисовать сплошные линии независимости от скорости кисти  
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 17:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как рисовать сплошные линии независимости от скорости кисти (Программирование Android):

Сплошные линии - MS Excel
Есть такая проблема, мне нужно в Excel вставить или как то сварганить две сплошные линии, на кнопку &quot;=&quot; не прокатит. Например &quot;&quot;&quot;&quot;...

Как рисовать линии в Canvas? - C# WPF
как перемещать объекты в canvans если линии я нарисовал в xaml? мне нужно вертикальные линии перемещать с лева на право. таймер...

Как на форме рисовать линии? - VBA
Например, нужно чтобы появлялась форма в таком виде для ввода даты: __.__.____/ Получается что здесь 3 текстбокса. Убрал у них эффекты....

Как рисовать линии в разных направлениях - C#
Доброго времени суток, Уважаемые! Помогите разобраться со следующей проблемой: надо нарисовать между двумя точками элемент (пример в...

Как на Image рисовать случайным образом линии. - C++ Builder
Люди добрые, подскажите, пожалуйста, как на загруженном Image рисовать случайным образом линии разной длины, чтобы они имели различное...

VisualStudio2008: Как рисовать линии в уже существующей форме? - OpenGL
Здравствуйте, пишу програмку, где нужна визуализация приходящих данных, решил для этого использовать OpenGL, перерыл кучу книжек и форумов,...

8
fiphiker
17.12.2012, 15:06
  #2

Не по теме:

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

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

когда создаешь проект там предлагают создать из примеров
нухный пример называетья google api помойму (там куча всего)
и там есть полностью готовая рисовалка
2
fiphiker
86 / 54 / 4
Регистрация: 08.03.2011
Сообщений: 546
17.12.2012, 15:49 #6
Во, спасибо что напомнил, сейчас открыл папку android-16 и там столько интерессного)
0
tr1ve
0 / 0 / 0
Регистрация: 22.01.2011
Сообщений: 4
17.12.2012, 16:26  [ТС] #7
flashok, о, спасибо. Правда, в samples android sdk его не нашел, но исходники есть в интернете.
Для будущих поколений, искать так - TouchPaint.java.
0
fiphiker
86 / 54 / 4
Регистрация: 08.03.2011
Сообщений: 546
22.12.2012, 21:32 #8
возник вопрос, как установить прозрачность холста?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.12.2012, 22:52 #9
#88ff2211
88 - прозрачность
ff - красный
22 - зеленый
11 - синий
1
22.12.2012, 22:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2012, 22:52
Привет! Вот еще темы с ответами:

Как рисовать линии и делать заливку по частям на форме? - C#
как нарисовать линию не через програмный код, а визуально? например мне надо разделить форму на 2 части линией и залить разными цветами...

Treeview Drag'n'Drop как рисовать линии и кнопки в дереве? - C++ Builder
Собственно сабж, есть Treeview хочу получить нарисованную ветку... Image + Text ... Можно получить, а вот как нарисовать плюсик(&quot;+&quot;) и...

Рисование в Lazarus: как рисовать кривые линии через синусы и косинусы - Lazarus
Вот ребята я учусь в МАН (Малая академия наук), на последнем занятии нам лектор обьяснял как рисовать в лазарусе (в особености и кривые...

Как сделать чтоб на форме можно било рисовать прямые линии только с точки А в Б - C#
Как сделать чтоб на форме можно било рисовать прямые линии только с точки А в Б. В смысле наводишь мышь на какой то компонент(А) и только...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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