Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27

что то не то с рисованием(

15.11.2012, 09:00. Показов 1355. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2012, 09:00
Ответы с готовыми решениями:

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

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

Проблемы с рисованием
После того как я запускаю код в консоли, на миг выбивает синусоида и сразу же пропадает почему? #define _WIN32_WINNT 0x0500 #include...

7
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
15.11.2012, 21:17
Лень было разбираться с Вашим кодом, но на первый взгляд кажется, что это все из-за того, что в методах рисования Вы используете указание позиции на экране в пикселях, а не в dp или других величинах.
0
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
16.11.2012, 07:22  [ТС]
Цитата Сообщение от razer89 Посмотреть сообщение
Лень было разбираться с Вашим кодом, но на первый взгляд кажется, что это все из-за того, что в методах рисования Вы используете указание позиции на экране в пикселях, а не в dp или других величинах.
а как програмно указывать в dp?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.11.2012, 18:03
конвертнуть в пиксели
Java
1
2
float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
а лучше прописывать в ресурсах, оттуда можно сразу в пикселях вытянуть.
1
Mobile Developer
 Аватар для lifestyle
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
17.11.2012, 15:20
Вот пример русурса с 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
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.11.2012, 18:44
Цитата Сообщение от lifestyle Посмотреть сообщение
нету аргумента DPI.
че?..
0
 Аватар для kvaka
31 / 31 / 3
Регистрация: 26.06.2012
Сообщений: 166
17.11.2012, 23:08
Цитата Сообщение от lifestyle Посмотреть сообщение
формула не совсем правильная - нету аргумента DPI.
По этому на экранах с разным DPI будут опять проблемы, куда этот аргумент вставить в формуле - не помню, нужно погуглить
Правильная формула. Даже не представляю что ты гуглить собираешься.
количество пикселей = количество dp * плотность экрана.

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

а первоисточник здесь:
http://developer.android.com/g... pport.html
Упс, точно прогнал чето, просмотрел плотность...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2012, 00:14
Помогаю со студенческими работами здесь

Пoмогите разобраться с рисованием.
Помогите пожалуйста разобраться... Имею такой код: #include &lt;windows.h&gt; #include &quot;windowsx.h&quot; LRESULT CALLBACK...

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

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

Проблема с рисованием графа в Image
Здравствуйте, возникла проблема с рисованием графа. Я хотел написать программа, которая рисует заданное количество кругов и ребер в Image: ...

Проблема с рисованием на PictureBox с увеличением
Делаю графический редактор на подобии Paint.net ломаю голову не 1 ин год уже и вот надеюсь получю помощь! Суть моей проги пока токова ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru