Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
1

Рисование

06.02.2013, 10:51. Просмотров 1919. Ответов 19
Метки нет (Все метки)

Здравствуйте, можно ли кинуть поверх бэкграунда прозрачный слой и рисовать на нем?
на канве вроде нельзя прозрачность ставить..
или если можно на andengine рисовать на спрайтах..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2013, 10:51
Ответы с готовыми решениями:

Рисование
Добрый день!В программирование еще новичек,прошу совета.Создаю приложение,нужно...

Рисование в NestedScrollView
здравствуйте. Изучаю Андроид самостоятельно и совсем недолго. Столкнулся с...

Рисование в Android
Такой вопрос, прочитал...

ImagView 2D рисование
Здраствуйте, мне нужно рисовать в ImagView, у меня есть код но он не работаэть,...

Рисование в main
здравствуйте возник такой вопрос: В main.xml имеем разметку tablelayout, в ней...

19
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 14:33 2
просто рисуйте поверх, в чем проблема.
или вы хотите прозрачность нарисовать?)
прозрачную красную линию голубого цвета)
1
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
06.02.2013, 19:30  [ТС] 3
нет, шеф,
нужно типа рисовать через стекло) по другую сторону стекла ставим фон, с этой рисуем, бэк не изменяется
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 20:04 4
не вижу разницы в конечном результате...

Добавлено через 6 минут
просто рисуете сначала фон, потом остальное.
0
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
06.02.2013, 20:34  [ТС] 5
V0v1k, можете подробней объяснить суть?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 20:38 6
Java
1
2
canvas.drawBitmap (background, matrix, paint);
canvas.drawBitmap (foreground, matrix, paint);
1
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
06.02.2013, 21:02  [ТС] 7
Спасибо,а прозрачность как задается?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.02.2013, 21:12 8
прозрачность - это отсутствие рисунка, просто не рисуйте и будет вам прозрачность)

или может вы хотите что-то ПОЛУпрозрачным нарисовать?
0
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
06.02.2013, 21:52  [ТС] 9
что то мы о разном думаем...попробую сделать на C# проттотип, потом отпишусь)
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
07.02.2013, 12:25 10
У Paint есть свой Alpha. Попробуйте его задать
Java
1
2
Paint p = new Paint();
p.setAlpha(127);
а потом рисовать на канвасе этим пейнтом.
1
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
07.02.2013, 17:42  [ТС] 11
мне не кисти надо прозрачность ставить, а второго слоя, на котором будут рисовать....
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.02.2013, 17:53 12
ну елки, нарисуйте полностью прозрачный прямоугольник на весь дисплей и представьте что это слой)

какого именно эффекта вы хотите добиться я не понимаю.
1
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
07.02.2013, 19:34  [ТС] 13
Цитата Сообщение от V0v1k Посмотреть сообщение
ну елки, нарисуйте полностью прозрачный прямоугольник на весь дисплей и представьте что это слой)

какого именно эффекта вы хотите добиться я не понимаю.
Вот, про это я и говорил, просто думал как нибудь аппаратно это можно задать, спасибо.
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
08.02.2013, 11:00 14
Цитата Сообщение от fiphiker Посмотреть сообщение
Здравствуйте, можно ли кинуть поверх бэкграунда прозрачный слой и рисовать на нем? на канве вроде нельзя прозрачность ставить..
Конечно можно. Делаете ImageView (или просто View) на весь экран и в ней рисуете. Причём свой бэкграунд можете засетить в контейнер который содержит ваш компонент в котором будете рисовать, но можете и бэкграунд рисовать в ручную, разницы в перфомансе не будет скорее всего.
Прозрачность устанавливать можно.
Код Java(TM) 2 Platform Standard Edition 5.01 2 3 c.drawColor(Color.TRANSPARENT, Mode.CLEAR);
с - ваш канвас. эта функция зальёт ваш канвас любым цветом. Выше описано как сделать прозрачным.
PS если вам надо рисвать много быстро и ещё с анимациями - сразу предупрежу вам нужен SurfaceView (рисовать в обычном View в UI треде можно только простейшие вещи).
1
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
08.02.2013, 18:22  [ТС] 15
Почему то выводится так:
делаю так
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
package com.example.touchdrawv2;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.PorterDuff.Mode;
import android.util.Log;
import android.view.Menu;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
 
public class TouchDrawv2 extends Activity implements SurfaceHolder.Callback {
 
    private static final String TAG = "Svetlin SurfaceView";
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        SurfaceView view = new SurfaceView(this);
        setContentView(view);
        view.getHolder().addCallback(this);
    }
 
    public void surfaceCreated(SurfaceHolder holder) {
        tryDrawing(holder);
    }
 
    public void surfaceChanged(SurfaceHolder holder, int frmt, int w, int h) { 
        tryDrawing(holder);
    }
 
    public void surfaceDestroyed(SurfaceHolder holder) {}
 
    private void tryDrawing(SurfaceHolder holder) {
      
 
        Canvas canvas = holder.lockCanvas();
        if (canvas == null) {
            Log.e(TAG, "Cannot draw onto the canvas as it's null");
        } else {
            drawMyStuff(canvas);
            holder.unlockCanvasAndPost(canvas);
        }
    }
 
    private void drawMyStuff(final Canvas canvas) {
 
       // canvas.drawRGB(255, 0, 0);
        canvas.drawColor(Color.TRANSPARENT, Mode.CLEAR);
    }
}
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
08.02.2013, 18:48 16
Цитата Сообщение от fiphiker Посмотреть сообщение
Почему то выводится так: делаю так
по умолчанию сюрфейс вью так устроен что под ним ничего нету, даже бэкграунда контейнреа (под ним пустотааа ) так что если вы хотите эфект рисования поверх чего то (картинки фотки например) то полагаю что вам сначало надо наприсовать эту вашу картинку на сюрфейсе (Canvas.drawBitmap) а потом поверх этого рисовать то что надо.
Если вы хотите что бы сюрфейсвью был прозрачный и под ним было что то - его надо делать поверх всего (такое тоже возможно, если вам это надо - отпишитесь). Состаяния что бы сюрфейс вью был между вьюхами - скорее всего добится нельзя.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.02.2013, 19:06 17
Цитата Сообщение от YAUHEN Посмотреть сообщение
что бы сюрфейсвью был прозрачный
можно подробнее?

Добавлено через 3 минуты
нашел такое
mPreviewThemeSurface.setZOrderOnTop(true); // necessary
mPreviewThemeSurface.getHolder().setFormat(PixelFormat.TRANSPARENT);
1
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
08.02.2013, 19:10 18
Цитата Сообщение от V0v1k Посмотреть сообщение
можно подробнее?
для начала вам надо опредилится надо вам это или нет (определяется так - если у вас на бэкграунде (то что будет под сюрфейсом) должно размещаться куча всего что должно быть видно и поверх этого должен быть сюрфейс - то вам скорее всего действительно надо рисовать сюрфейс поверх всего, ИНАЧЕ - сюрфейс на него бэкграунд а на бэкграунд всё остальное)

Java
1
2
SurfaceView.setZOrderOnTop(true);
SurfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT);
Добавлено через 1 минуту
Цитата Сообщение от V0v1k Посмотреть сообщение
нашел такое mPreviewThemeSurface.setZOrderOnTop(true); // necessary mPreviewThemeSurface.getHolder().setFormat(PixelFormat.TRANS PARENT);
всё правильно нашли
1
fiphiker
87 / 58 / 2
Регистрация: 08.03.2011
Сообщений: 546
08.02.2013, 21:01  [ТС] 19
Цитата Сообщение от YAUHEN Посмотреть сообщение
(такое тоже возможно, если вам это надо - отпишитесь)
да, мне надо чтоб был слой на который грузим бэк и слой на котором рисуем(прозрачный чтоб видеть рисунок на нижнем слое), то есть наложение
Спасибо за ответы.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.02.2013, 21:40 20
просто рисуете сначала фон, а потом на фоне рисуете что хотите.
0
08.02.2013, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2013, 21:40

Рисование на кнопке
Как можно из кнопки сделать что-то типа ProgressBar со статическим обновлением...

Рисование линий
Здравствуйте все. Мой вопрос в том, как нарисовать линии поверх изображения...

Рисование на canvas - подтормаживание
MainActivity.java protected void onCreate(Bundle savedInstanceState) { ...


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

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

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