Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Androot
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
#1

что то не то с рисованием( - Программирование Android

15.11.2012, 09:00. Просмотров 810. Ответов 7
Метки нет (Все метки)

Здравствуйте, появился такой вопрос. То есть его не было до того момента пока я не выложил приложение на сайт и его не стали скачивать люди. смысл моего приложение накладывать на картинку слова, фотографии и потом это дело сохранять. я отлаживал на эмуляторе с экранами 4 wvga Nexus s b 3.7 wvga nexus one
тестировал на своем планшете 9.7
везде нормально отображалось и сохранялось.
но тут пришол вопрос на форуме от скачавшего пользователя что картинка искривилась, и в самом деле когда я выбрал в эмуляторе экран Samsung Galaxy Nexus и запустил изображение то картинка которая получилась на выходе не как не соответствовала с тем на чем я тестировал это приложение.
вод код основной части
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
 Paint paint = new Paint();
        Bitmap bmpBase = null;
        bmpBase = Bitmap.createBitmap(700, 500, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmpBase);
        Resources res_obraz = this.getResources();
         bm = BitmapFactory.decodeResource(res_obraz, R.drawable.obraz);     
         canvas.drawBitmap(bm, 0, 0, paint);
         bm2 = galleryPic;
         int width = bm2.getWidth();
         int height = bm2.getHeight();
         Matrix matrix = new Matrix();
         float newWidth = 205;
         float newHeight = 262;
         float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        matrix.postScale(scaleWidth,scaleHeight);
         bm3 = Bitmap.createBitmap(bm2, 0, 0,
             width, height, matrix, true);
         
         canvas.drawBitmap(bm3, 455, 8, paint);
         Paint textPaint = new Paint();
         textPaint.setTextSize(58);
         Typeface type = Typeface.createFromAsset(getAssets(),"fonts/olga_ctt.ttf"); 
        textPaint.setTypeface(type);
        textPaint.setColor(Color.BLUE);
         canvas.drawText(surname_s, 175, 113, textPaint);
         canvas.drawText(name_s+" "+otch_s, 15, 160, textPaint);
         canvas.drawText(""+age_i, 135, 207, textPaint);
         canvas.drawText(pol_s, 310, 207, textPaint);
         canvas.drawText(d_s, 185, 247, textPaint);
         canvas.drawText(d_s1, 15, 287, textPaint);
         canvas.drawText(d_s2, 15, 327, textPaint);
         canvas.drawText(d_s3, 15, 367, textPaint);
         bm4 = BitmapFactory.decodeResource(res_obraz, R.drawable.avt);
 
         canvas.drawBitmap(bm4, 485, 300, paint);
         mday = c.get(Calendar.DAY_OF_MONTH);
        
        myear = c.get(Calendar.YEAR);
        
       
         if (myear>=2000){
             myear = c.get(Calendar.YEAR)-2000;
         }
         mmonth = c.get(Calendar.MONTH)+1;
         month(mmonth);
         
         canvas.drawText(""+mday, 115, 483, textPaint);
         canvas.drawText(mont, 200, 480, textPaint);
         canvas.drawText(""+myear, 418, 483, textPaint);
на тех экрана где я тестировал изображение во-первых полное ( bm = BitmapFactory.decodeResource(res_obraz, R.drawable.obraz); )
во-вторых надписи стоят там где нужно и фотография стоит на своем месте.
а на Samsung Galaxy Nexus сам образ ( bm = BitmapFactory.decodeResource(res_obraz, R.drawable.obraz); ) обрезан примерно в 3 раза по высоте и 2 раза по ширине и сами надписи вместе с фоткой сместились.

что делать???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 09:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос что то не то с рисованием( (Программирование Android):

Проблема с рисованием
Почему то на форме нет рисунка. Подскажите что не так. using System;...

Проблема с рисованием.
Здравствуйте. Немного предыстории: пару недель назад я решил начать изучать с#,...

Трудности с рисованием в Canvas
Рисую в Canvas`e квадрат и все вроде бы нормально, но когда я его перетаскиваю...

Непонятно с рисованием GDI
Рисую матрицу 8х8 в окне. В порядке, обратном шахматному (сменить местами белые...

Пoмогите разобраться с рисованием.
Помогите пожалуйста разобраться... Имею такой код: #include <windows.h>...

Graphics: беда с рисованием фигур и линий. :)
Следующим способом я вырисовывал линии: var volume_line:Shape = new...

7
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
15.11.2012, 21:17 #2
Лень было разбираться с Вашим кодом, но на первый взгляд кажется, что это все из-за того, что в методах рисования Вы используете указание позиции на экране в пикселях, а не в dp или других величинах.
0
Androot
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
16.11.2012, 07:22  [ТС] #3
Цитата Сообщение от razer89 Посмотреть сообщение
Лень было разбираться с Вашим кодом, но на первый взгляд кажется, что это все из-за того, что в методах рисования Вы используете указание позиции на экране в пикселях, а не в dp или других величинах.
а как програмно указывать в dp?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.11.2012, 18:03 #4
конвертнуть в пиксели
Java
1
2
float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
а лучше прописывать в ресурсах, оттуда можно сразу в пикселях вытянуть.
1
lifestyle
Mobile Developer
233 / 229 / 18
Регистрация: 10.05.2009
Сообщений: 917
17.11.2012, 15:20 #5
Вот пример русурса с dp(dip)

XML
1
2
<dimen name = "value_name">10dp</dimen> 
<dimen name = "value_name">10dip</dimen>
Добавлено через 1 минуту
Цитата Сообщение от V0v1k Посмотреть сообщение
конвертнуть в пиксели
Java
1
2
float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
а лучше прописывать в ресурсах, оттуда можно сразу в пикселях вытянуть.
формула не совсем правильная - нету аргумента DPI.
По этому на экранах с разным DPI будут опять проблемы, куда этот аргумент вставить в формуле - не помню, нужно погуглить
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.11.2012, 18:44 #6
Цитата Сообщение от lifestyle Посмотреть сообщение
нету аргумента DPI.
че?..
0
kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
17.11.2012, 23:08 #7
Цитата Сообщение от lifestyle Посмотреть сообщение
формула не совсем правильная - нету аргумента DPI.
По этому на экранах с разным DPI будут опять проблемы, куда этот аргумент вставить в формуле - не помню, нужно погуглить
Правильная формула. Даже не представляю что ты гуглить собираешься.
количество пикселей = количество dp * плотность экрана.

а первоисточник здесь:
http://developer.android.com/guide/practices/screens_support.html
2
lifestyle
Mobile Developer
233 / 229 / 18
Регистрация: 10.05.2009
Сообщений: 917
19.11.2012, 00:14 #8
Цитата Сообщение от kvaka Посмотреть сообщение
Правильная формула. Даже не представляю что ты гуглить собираешься.
количество пикселей = количество dp * плотность экрана.

а первоисточник здесь:
http://developer.android.com/guide/practices/screens_support.html
Упс, точно прогнал чето, просмотрел плотность...
0
19.11.2012, 00:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2012, 00:14
Привет! Вот еще темы с решениями:

Помогите с линией (точками) с рисованием вообще!
Привет. Вообщем народ может кто знает где найти инфу по работе с графикой в...

Как в Qt можно справится с рисованием график и чартов?
Привет Как в Qt можно справится с рисованием график и чартов? Я не смог...

код с рисованием фигур по заданным точкам пользователем
Уважаемые форумчане, есть ли у кого-нибудь код с рисованием фигур по заданным...

Очистка PictureBox перед рисованием очередной фигуры
Подскажите, пожалуйста, как сделать так, чтобы при рисовании одной фигуры,...


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

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

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