|
04.11.2008, 06:00
|
#1
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Lib_beta: Перенаправления вывода в картинку/на дисплей
Пока что библиотеки для облегчения генерации картинок не было.
Я решил исправить это досадное недоразумение.
Библиотека крайне простая. Новые функции такие:
CreateImage(w: integer; h: integer) - Создать пустую (белую) картинку с размерами w * h
Если w и h равны 0 - картинка удаляется (с очисткой памяти).
Replace - Переключить фокус вывода с дисплея в картинку и наоборот.
После переключения фокуса вывода в картинке можно рисовать стандартными методами MIDletPascal
(рисовать примитивы: линии, точки, круги, дуги; надписи; выводить в неё др. картинки и проч.)
image GetImage - Получить картинку, которая сейчас находится НЕ в фокусе вывода
Т.е. если фокус вывода сейчас стоит на дисплее - вернется ваша сгенерированная картинка.
Если фокус на картинке - вернется скриншот вашего дисплея.
PutImage(im: image) - Поменять картинку, которая сейчас находится НЕ в фокусе вывода на свою
Практически пример ипользования прилагается.
|
(Offline)
|
|
Эти 12 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
|
.:MaSe:. (25.05.2014), Вредитель (15.01.2009), Cliffe Snake (06.11.2008), Dj_Alex (05.08.2010), Igor (27.10.2010), m1kc. (19.11.2008), Phantom (04.11.2008), Pyth_ON (21.02.2009), Rock2roll (31.07.2010), Romanzes (04.11.2008), sasha_peleng (04.11.2008), Skythrone (04.11.2008)
|
06.11.2008, 19:18
|
#2
|
Нуждающийся
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Классно!! теперь можна декали юзать вовсю. Odd, красава =)))
|
(Offline)
|
|
15.01.2009, 17:28
|
#3
|
AnyKey`щик
Регистрация: 31.08.2008
Сообщений: 11
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
хм, спасибо.....а можно более одной картинки(в будущем)?
|
(Offline)
|
|
21.01.2009, 16:11
|
#4
|
Оператор ЭВМ
Регистрация: 04.09.2008
Сообщений: 39
Написано 4 полезных сообщений (для 5 пользователей)
|
Lib_beta: Перенаправления вывода в картинку/на дисплей
odd, у меня непонятные глюки при использовании PutImage. При попытке изменить скормленное либе изображение программа намертво зависает.
P.S. Проверено на К770 и W510. На эмуле, как ни странно, все ОК.
P.P.S.
img:=imloadjsr75.loadimage('/'+FormGetText(xf)); //Загрузка проходит нормально, это я проверял. CreateImage(0,0); // Это на всякий случай. memclean.clean; CreateImage(GetImageWidth(img),GetImageHeight(img)); // Ну и это на всякий случай. Без нее тоже зависает. PutImage(img); memclean.clean;
|
(Offline)
|
|
01.02.2009, 14:38
|
#5
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Странно всё это. Буду разбираться.
|
(Offline)
|
|
23.03.2010, 17:21
|
#6
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
А как запинается? Зависает?
Приведи ещё кусок кода далее, посмотрим как ты генерируешь картинку.
Пока при чтении ресурса явных ошибок не нашел.
|
(Offline)
|
|
23.03.2010, 21:36
|
#7
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
odd, если за год не нашел - забей, не найдешь уже...
|
(Offline)
|
|
05.08.2010, 20:24
|
#8
|
ПроЭктировщик
Регистрация: 08.03.2009
Адрес: Saransk
Сообщений: 143
Написано 25 полезных сообщений (для 45 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
у меня вылетает MP 2.02 при компиляции с этой либой. Пробовал в 3 версии, вылетает компилятор на строчке
using external library Lib_beta.class
Если либу исключить и закомментировать ее команды, то компилится норм.
Возможен ли конфликт с кодом или с другой либой (юзаю еще lib_gfx)?
upd
изменил порядок в uses и скомпилировалось без ошибки, так значит либы конфликтуют?
__________________
|
(Offline)
|
|
14.08.2010, 15:46
|
#9
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Бывают и такие конфликты. Но библиотека пашет.
|
(Offline)
|
|
04.09.2010, 21:01
|
#10
|
ПроЭктировщик
Регистрация: 30.06.2009
Адрес: Челябинская обл.
Сообщений: 111
Написано 32 полезных сообщений (для 99 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Где-то читал, что в джаве можно массив чисел скинуть на экран. Типа, создаёшь массив целых чисел (столько же элементов, сколько пикселей на экране), заполняешь его (число=цвет RGBA), вызываешь какую-то функцию, и массив копируется в видеопамять. Такое реально в эту процедуру засунуть? (должно быть намного быстрее, чем забивание экрана точками через plot, установка одной точки занимает 7 мкс, а присваивание типа а:=б всего 30 нс)
__________
Извиняюсь, нашёл
http://http://forum.boolean.name/showthread.php?t=4621
__________________
Аинéжарбази овокáсьф имятнэ́меле как, имякщтóт и имяини́ль оклёт ими́ньдо сяюзлёп, ильсы́м эынэвьтспóс ышáн мóнян тягалзи, эы́жущт тят-ищт сант-ищтý анакаккáт; áкызэй овóваримь авотэ́ як итя́ммарг тыжýлс аирьтэмяег аянлетя́трэщтанот, мадóраи мынавóзарбо мэ́сьф мынтáняп авокáныдя, икиньхэ́ть мóкызэй астэя́львэй шóтрэщт ильсэ́й.
Щамóпф раткáдэрь оидюá!
Последний раз редактировалось nil0q, 11.09.2010 в 19:49.
|
(Offline)
|
|
15.10.2010, 23:14
|
#11
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Такое действительно есть. Кому-то надо? Можно добавить в какую-либо библиотеку.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
|
|
26.10.2010, 23:23
|
#12
|
ПроЭктировщик
Регистрация: 21.06.2009
Адрес: Беларусь, Столбцы
Сообщений: 148
Написано 32 полезных сообщений (для 57 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
добавь, было бы хорошо
|
(Offline)
|
|
27.10.2010, 18:30
|
#13
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Добавил работу с массивом точек.
Новые команды:
create_array(w: integer; h: integer) - создать картинку в виде массива точек размерами w * h
clear_array - очистить память от массива точек
draw_array(x: integer; y: integer) - вывести картинку (из массива точек) на экран (без перерисовки) x, y - координаты левого верхнего угла картинки поддерживается полупрозрачность! poke(x: integer; y: integer; color: integer) - записать точку в массив точек x, y - координаты точки в массиве color - ARGB цвет точки (подсчитаете на научном калькуляторе) integer peek(x: integer; y: integer) - прочитать значение цвета в точке из массива точек x, y - координаты точки в массиве
Простейший пример работы с массивом чисел:
Program BetaTest; Uses beta; Var im: image; Begin CreateImage(100, 100); // Создаем картинку 100*100 Replace; // Переключаем поток вывода на нашу картинку DrawText('odd was here', 0, 0); // Рисуем что-то на картинке DrawImage(LoadImage('/icon.png'), 5, 16); // Для примера выводим в нашу картинку др. картинку Replace; // Переключаем фокус вывода назад. Теперь вывод будет идти на дисплей SetColor(0, 255, 0); FillRect(0, 0, GetWidth, GetHeight); // Закрашиваем дисплей im:=GetImage; // Извлекаем полученную картинку в переменную (можно и не в переменную, а вставить внутрь функции DrawImage) DrawImage(im, 5, 5); // Выводим сгенерированную картинку на дисплей Repaint; Delay(5000); // Работа с массивом точек SetColor(255, 255, 255); FillRect(0, 0, GetWidth, GetHeight); // Закрашиваем дисплей create_array(100, 50); // Создаем массив точек poke(1, 5, 4278190335); // Закрашиваем точку (1, 5) цветом FF0000FF = 4278190335 draw_array(0, 0); // Выводим массив на дисплей Repaint; Delay(5000); End.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
|
|
27.10.2010, 22:03
|
#14
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
так теперь можно сделать paint на мр?
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
27.10.2010, 23:03
|
#15
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_beta: Перенаправления вывода в картинку/на дисплей
Сообщение от psih1
так теперь можно сделать paint на мр?
|
Можно. Кстати, могу добавить функцию для быстрого помещения любой картинки в массив.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:36.
|