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

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

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

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

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

Здравствуйте, возникла проблема не могу поменять обычный фон WHITE на этот http://bazilisk.com/wp-content/uploa...a_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();
    }
    }
    }
     
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 21:51     Как нарисовать Bitmap на Canvas'е #2
Цитата Сообщение от Names Посмотреть сообщение
Java
1
canvas.drawBitmap(guns, 0, 120, null);
попробуйте вместо null написать new Paint()
Names
-1 / 4 / 0
Регистрация: 04.02.2013
Сообщений: 167
14.05.2013, 22:21  [ТС]     Как нарисовать Bitmap на Canvas'е #3
Цитата Сообщение от V0v1k Посмотреть сообщение
попробуйте вместо null написать new Paint()
а картинку куда запихнуть надо? как?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
14.05.2013, 22:33     Как нарисовать Bitmap на Canvas'е #4
так guns это и есть картинка.

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

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

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


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



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

какой должен быть размер картинки что бы не было черной полоски
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 19:20     Как нарисовать Bitmap на Canvas'е
Еще ссылки по теме:

Android Как разместить EditText и область рисования Canvas в одном Activity?
Android Как по адресу фотографии fileUri получить Bitmap?
Android Как в canvas сделать плавный переход от одной картинки к другой?
Нарисовать круг используя Canvas Android
Android Как сконвертировать BitMap в BLOB

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 19:20     Как нарисовать Bitmap на Canvas'е #16
Цитата Сообщение от Names Посмотреть сообщение
какой должен быть размер картинки что бы не было черной полоски
не меньше области на которую вы накладываете фон.
Yandex
Объявления
15.05.2013, 19:20     Как нарисовать Bitmap на Canvas'е
Ответ Создать тему
Опции темы

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