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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
#1

Как нарисовать Bitmap на Canvas'е - Программирование Android

14.05.2013, 21:43. Просмотров 2172. Ответов 15
Метки нет (Все метки)

Здравствуйте, возникла проблема не могу поменять обычный фон WHITE на этот http://bazilisk.com/wp-content/uploads/2009/12/tetradnaya_kletka_1.jpg

Java
1
        canvas.drawColor(Color.WHITE);
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
кто разбирается, помогите пожалуйста обычный фон поменять на [url]http://bazilisk.com/wp-content/uploads/2009/12/tetradnaya_kletka_1.jpg[/url] заранее благодарен!
 
    package com.example.game02;
     
    import android.view.SurfaceView;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Random;
    import java.util.Timer;
     
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Rect;
    import android.media.AudioManager;
    import android.media.SoundPool;
    import android.view.MotionEvent;
    import android.view.SurfaceHolder;
     
    public class GameView extends SurfaceView implements Runnable {
     
    private GameThread mThread;
    private List<Ball> ball = new ArrayList<Ball>();
    private List<Enemy> enemy = new ArrayList<Enemy>();
    private Thread thred = new Thread(this);
    private Bitmap enemies;
    private Gun gun;
    private Bitmap guns;
     
    private SoundPool sounds;
    private int sExplosion;
     
    public int shotX;
    public int shotY;
     
    private boolean running = false;
     
    public class GameThread extends Thread {
     
    private GameView view;
     
    public GameThread(GameView view) {
    this.view = view;
    }
     
    public void setRunning(boolean run) {
    running = run;
    }
     
    public void run() {
    while (running) {
    Canvas canvas = null;
    try {
     
    canvas = view.getHolder().lockCanvas();
    synchronized (view.getHolder()) {
     
    onDraw(canvas);
    testCollision();
    }
    } catch (Exception e) {
    } finally {
    if (canvas != null) {
    view.getHolder().unlockCanvasAndPost(canvas);
    }
    }
    }
    }
    }
     
    public GameView(Context context) {
    super(context);
     
    mThread = new GameThread(this);
     
    thred.start();
     
    getHolder().addCallback(new SurfaceHolder.Callback() {
     
    public void surfaceDestroyed(SurfaceHolder holder) {
    boolean retry = true;
    mThread.setRunning(false);
    while (retry) {
    try {
     
    mThread.join();
    retry = false;
    } catch (InterruptedException e) {
    }
    }
    }
     
    public void surfaceCreated(SurfaceHolder holder) {
    mThread.setRunning(true);
    mThread.start();
    }
     
    public void surfaceChanged(SurfaceHolder holder, int format,
    int width, int height) {
    }
    });
     
    enemies = BitmapFactory.decodeResource(getResources(),
    R.drawable.target);
    enemy.add(new Enemy(this, enemies));
     
    guns = BitmapFactory.decodeResource(getResources(), R.drawable.player2);
    gun = new Gun(this, guns);
    sounds = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
    sExplosion = sounds.load(context, R.raw.explode, 1);
    }
     
    protected void onDraw(Canvas canvas) {
    canvas.drawColor(Color.WHITE);
     
    Iterator<Enemy> i = enemy.iterator();
    while (i.hasNext()) {
    Enemy e = i.next();
    if (e.x >= 1000 || e.x <= 1000) {
    e.onDraw(canvas);
    i.remove();
    }
    }
     
    Iterator<Ball> j = ball.iterator();
    while (j.hasNext()) {
    Ball b = j.next();
    if (b.x >= 1000 || b.x <= 1000) {
    b.onDraw(canvas);
    } else {
    j.remove();
    }
    }
     
    canvas.drawBitmap(guns, 0, 120, null);
     
    }
     
    private void testCollision() {
    Iterator<Ball> b = ball.iterator();
    while (b.hasNext()) {
    Ball balls = b.next();
    Iterator<Enemy> i = enemy.iterator();
    while (i.hasNext()) {
    Enemy enemies = i.next();
     
    if ((Math.abs(balls.x - enemies.x) <= (balls.width + enemies.width) / 2f)
    && (Math.abs(balls.y - enemies.y) <= (balls.height + enemies.height) / 2f)) {
    sounds.play(sExplosion, 1.0f, 1.0f, 0, 0, 1.5f);
    i.remove();
    b.remove();
    }
    }
    }
    }
     
    public Ball createSprite(int resouce) {
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), resouce);
    return new Ball(this, bmp);
    }
     
    public boolean onTouchEvent(MotionEvent e) {
    shotX = (int) e.getX();
    shotY = (int) e.getY();
     
    if (e.getAction() == MotionEvent.ACTION_DOWN)
    ball.add(createSprite(R.drawable.bullet));
     
    return true;
    }
     
    public void run() {
    while (true) {
    Random rnd = new Random();
    try {
    Thread.sleep(rnd.nextInt(2000));
    enemy.add(new Enemy(this, enemies));
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
     
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 21:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как нарисовать Bitmap на Canvas'е (Программирование Android):

Как сконвертировать BitMap в BLOB - Программирование Android
Доброго вечера. У меня есть переменная BitMap (получаю фото с камеры), которую хочу записать в БД (SQLite) в поле BLOB. Но в чистом виде...

Как правильно работать с BITMAP? - Программирование Android
задача менять цвет картинки которая стоит в фоне у EditText; ну почитал, посмотрел ... везде работают с ImageView/// как мне...

Как создать Bitmap черно-белый - Программирование Android
Вот так создаю Bitmap bitmap=Bitmap.createBitmap(720, 1280, Bitmap.Config.RGB_565); То есть 2 байта на точку. А мне надо 2 бита...

Как по адресу фотографии fileUri получить Bitmap? - Программирование Android
Как можно по адресу фотографии fileUri получить Bitmap? мне все не найти как в коде расписать это дело

Как из GIF файла скопировать кадры в Bitmap массив ? - Программирование Android
Доброго времени суток! Подскажите как из GIF файла скопировать кадры в Bitmap массив и как из GIF файла получить время смены кадров?

Как нарисовать Bitmap на Bitmap? - C++ Builder
Bitmap1-&gt;Canvas-&gt;Draw(1,1,Bitmap2); Так не работает, хотя с Image проходило.

15
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 21:51 #2
Цитата Сообщение от Names Посмотреть сообщение
Java
1
canvas.drawBitmap(guns, 0, 120, null);
попробуйте вместо null написать new Paint()
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
14.05.2013, 22:21  [ТС] #3
Цитата Сообщение от V0v1k Посмотреть сообщение
попробуйте вместо null написать new Paint()
а картинку куда запихнуть надо? как?
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 22:33 #4
так guns это и есть картинка.

Добавлено через 36 секунд
или я что-то неправильно понял?

Добавлено через 3 минуты
в общем фон рисуйте также как и любые другие картинки.
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
14.05.2013, 22:40  [ТС] #5
с хтмл работал, там по другому вызываются они, а тут как? на фон? подскажите, или мож у кого гайд есть
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 22:45 #6
не понял вопроса.
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
14.05.2013, 22:54  [ТС] #7
Цитата Сообщение от V0v1k Посмотреть сообщение
не понял вопроса.
лан, пойду искать дальше)
0
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
15.05.2013, 00:18 #8
Просто точно так же, как вы объявляете свою картинку guns, также объявите и свой фон (допустим, fon).
Java
1
2
Bitmap fon = BitmapFactory.decodeResource(getResources(), R.drawable.fon);
canvas.drawBitmap(fon, 0, 0, new Paint());
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
15.05.2013, 17:16  [ТС] #9
удалите 1 пост мой пожуйста
0
YAUHEN
146 / 128 / 6
Регистрация: 29.07.2008
Сообщений: 506
15.05.2013, 17:21 #10
ну вообще если вам нужен рисунок тетрадной клеточки то можно использовать шейдер
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
15.05.2013, 18:21  [ТС] #11
такое дело поставил, но теперь закриваются мне объекты, и не чего не видно кроме фона, и плюс внизу черная полоса.... как решить данную проблему?

Добавлено через 4 минуты
как полосу убрать
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 18:30 #12
Цитата Сообщение от Names Посмотреть сообщение
такое дело поставил, но теперь закриваются мне объекты
сначала рисуйте фон, потом все остальное.


Цитата Сообщение от Names Посмотреть сообщение
внизу черная полоса
просто картинка меньше чем канвас.
http://developer.android.com/trainin...ml#load-bitmap
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
15.05.2013, 18:33  [ТС] #13
Цитата Сообщение от V0v1k Посмотреть сообщение
сначала рисуйте фон, потом все остальное.



просто картинка меньше чем канвас.
http://developer.android.com/trainin...ml#load-bitmap
плохо англ знаю, трудно разобраться о чем там)
0
V0v1k
1159 / 983 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 18:39 #14
Цитата Сообщение от Names Посмотреть сообщение
плохо англ знаю
учите...
0
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
15.05.2013, 18:41  [ТС] #15
Цитата Сообщение от V0v1k Посмотреть сообщение
учите...
когда нибудь..

какой должен быть размер картинки что бы не было черной полоски
0
15.05.2013, 18:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 18:41
Привет! Вот еще темы с ответами:

Нарисовать прошлый Bitmap на новом так, чтобы небыл растянут рисунок, если новый Bitmap больше размером - C#
Короче пытался сделать такое дело: Рисую фигуры на форме, когда отпускаю левую кнопку мыши (когда кнопка зажата, то растягивается например...

Как нарисовать Bitmap в конкретной точке на контроле Image ? - C# WPF
Привет ! У меня есть 9 небольших Bitmap'ов, мне нужно их нарисовать в определенных точках, на System.Windows.Contols.Image. На...

Сетка на Canvasе - Delphi
На Canvasе (20*30) нарисована сетка (20*20) и с шагом Даны координаты координаты нужно найти координаты верхнего левого угла яцейки сетка

Как создать bitmap из области (по координатам пикселей) другого bitmap - C#
Здравствуйте. Подскажите пожалуйста как создать bitmap из области(по координатам пикселей) другого bitmap. Вообщем обрезать.


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

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

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