Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Основной форум

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 12.08.2009, 23:37   #1
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
canvas: аналог GetPixel или как ?

Всем привет.
Вообщем наигрался я с текстовыми мидлетами, захотелось попробовать что-нить порисовать Сейчас пишу простенькую прогу - хочу чтоб рисовала молнии. Для полного счастья хочу на уже созданном изображении в канве применить эффект Blur (размытие). Думаю делать примитивным способом - округление 8 близлежащих точек. Но сталкнулся с трудностью - а как получить пиксель (его цвет) из канвы по координатам x,y?

Смотрю в справку и вижу только Plot(x,y). А мне как-бы наоборот нужно... Еще есть некая ImageFromCanvas, которая возвращает тип image. Впринципе, то что нужно, но вот можно-ли как-то этот тип image обрабатывать, например как массив или еще как-то?

Глянул на список библиотек, но что-то похожей функции в них не нашел. Может конечно плохо глядел.. Помогите плиз советом новичку. Заранее спасибо
(Offline)
 
Ответить с цитированием
Старый 13.08.2009, 00:46   #2
DIMMON4IK
Знающий
 
Аватар для DIMMON4IK
 
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений
(для 78 пользователей)
Чуть не по теме (извини), но есть либа lib_effects, там вроде есть размытие
http://www.forum.boolean.name/showthread.php?t=7749
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tronix (13.08.2009)
Старый 13.08.2009, 14:57   #3
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от DIMMON4IK Посмотреть сообщение
Чуть не по теме (извини), но есть либа lib_effects, там вроде есть размытие
http://www.forum.boolean.name/showthread.php?t=7749
Спасибо, посмотрел, но либо она не работает, либо я хз. Далал примерно так:
img := ImageFromCanvas(0,0,GetWidth,GetHeight);
img := effect(img,5); //Blur
DrawImage(img,0,0);
Repaint
Рисовала по-моему в итоге черный экран, даже если на экране перед этим что-то было. Но еще поэксперементирую...

А пока решил использовать массив ((( Ессно тормоза, каких свет не видывал. Ни о каком либо реал-тайм и речи нет (( Что-то все время переполняеться(?), подозреваю что косяки в процедуре отрисовки линии, отловить пока не могу. Переодически виснет намертво.
Еще сталкнулся с тем, что MP разрешает запросто делить число на ноль, из-за чего соответственно зависалово мидлета.

В архиве исходники и JAR.

Последний раз редактировалось Tronix, 13.08.2009 в 21:00.
(Offline)
 
Ответить с цитированием
Старый 13.08.2009, 15:02   #4
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: canvas: аналог GetPixel или как ?

На счет GetPixel: такой функции нет, но в библиотеке cnv2 есть функция get_rgb, которая создает массив значений пикселов в RGB из изображения.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tronix (13.08.2009)
Старый 13.08.2009, 15:59   #5
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от ViNT Посмотреть сообщение
На счет GetPixel: такой функции нет, но в библиотеке cnv2 есть функция get_rgb, которая создает массив значений пикселов в RGB из изображения.
Интересно! А не подскажите, где данную либу взять? Поиск по форуму ссылки не дал.
(Offline)
 
Ответить с цитированием
Старый 13.08.2009, 16:06   #6
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Забыл, там даже есть функция
function get_color(x,y:integer):integer;
так что, можно сразу ее использовать.

Вот сама либа:
Вложения
Тип файла: zip Lib_cnv2.zip (975 байт, 604 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tronix (13.08.2009)
Старый 13.08.2009, 18:02   #7
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Мдя, функция хороша, но ругается что-то про совместимость типов, если сделать c := het_color(50,50), где c - integer. Хотя вроде если делать s := IntegerToString(get_color(50,50)), то вроде работает... Но тут опять-же вопросы скорости: пока она в строку переведеться, пока из строки перевести в шеснадцатерицную и выципить компоненты RGB, пока их поменять и потом опять-таки рисовать Plot по точке.... Вообщем как я понимаю на MP рендерить что-либо в реальном времени не получиться.

Все больше и больше посматриваю в сторону нативной Явы

Ну и выложу на всякий случай исправленный исходник демки, там минусовые значения появлялись в SetColor и line_, отчего намертво висло все. Щаз исправил. Звездочка - смена картинки, решетка - выход.
Миниатюры
Нажмите на изображение для увеличения
Название: flash1.PNG
Просмотров: 1173
Размер:	10.3 Кб
ID:	7040  
Вложения
Тип файла: zip Test.zip (50.2 Кб, 558 просмотров)
(Offline)
 
Ответить с цитированием
Старый 15.08.2009, 05:16   #8
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: canvas: аналог GetPixel или как ?

О боже, зачем тебе переводить в строку, чтобы получить rgb составляющие? Юзай битовые сдвиги.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Phantom за это полезное сообщение:
IDOL 1234 (09.07.2012), Tronix (15.08.2009)
Старый 15.08.2009, 09:36   #9
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от Phantom_wc Посмотреть сообщение
О боже, зачем тебе переводить в строку, чтобы получить rgb составляющие? Юзай битовые сдвиги.
А пофигу, все равно for x := 1 to Width do for y := 1 to Height do Plot(x,y) будет тормознуто. Вот если бы можно было сразу подготовить как-то image массив и его отрисовывать DrawImage, может быть что-то и получилось бы.
Но за идею со сдвигами спасиб конешно. Знал, но забыл (
(Offline)
 
Ответить с цитированием
Старый 19.08.2009, 23:59   #10
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от Tronix Посмотреть сообщение
Вот если бы можно было сразу подготовить как-то image массив и его отрисовывать DrawImage, может быть что-то и получилось бы.
Вообще там есть функции, позволяющие получить массив из Image и Image из массива, или не это требуется?
(Offline)
 
Ответить с цитированием
Старый 20.08.2009, 11:23   #11
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от ViNT Посмотреть сообщение
Вообще там есть функции, позволяющие получить массив из Image и Image из массива, или не это требуется?
Это и требуется, но была бы к ней еще коротенькая справочка какая-нибуть... Сейчас только смотрю в декомпилированный класс, но пока не очень понятны параметры. Буду разбираться....

А так еще немного оптимизировал демку, стала раза в два побыстрее работать. Исходники прилогаються.
Вложения
Тип файла: zip Test.zip (50.9 Кб, 564 просмотров)
(Offline)
 
Ответить с цитированием
Старый 20.08.2009, 14:27   #12
cherepets
Бывалый
 
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений
(для 215 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Tronix, новая демка у меня не работает на телефоне (белый экран и зависание), на кэмуле тоже самое. sj boy справляется отлично...
А та которая 13.08.2009, 13:02 нормально работала.

Последний раз редактировалось cherepets, 20.08.2009 в 22:03.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tronix (21.08.2009)
Старый 21.08.2009, 10:39   #13
abcdef
Знающий
 
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений
(для 123 пользователей)
Ответ: canvas: аналог GetPixel или как ?

оптимизировал демку Tronix'а
Вложения
Тип файла: zip demo.zip (6.0 Кб, 575 просмотров)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Tronix (21.08.2009)
Старый 21.08.2009, 13:30   #14
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от cherepets Посмотреть сообщение
Tronix, новая демка у меня не работает на телефоне (белый экран и зависание), на кэмуле тоже самое. sj boy справляется отлично...
А та которая 13.08.2009, 13:02 нормально работала.
Ну значит чего-то опять в минусовые значения уходит, отлавливать уже лениво. Вообще угнетает конечно в мидлетах от MP отсутствие какого-либо обработчика ошибок деления/переполнения/не верных значений. Сложно смотреть чего там и почему переполняеться или в минус уходит только лишь с помощью Debug(); Прикиньте - крутяться четыре цикла, в них еще циклы - и потом в логе на 16 метров еще надо понять почему какая-нить переменная в минуса ушла. Неудобно вообщем ящитаю.
Угнетает то, что в некоторых встроенных функциях опять-таки нет защиты от дурака, на подобии SetColor(-1,0,0). В этом случае мы получаем глухой зависон, а не какойнибуть сообщение типа Run-time error: invalid parameter или типа того.

За багрепорт спасибо. Ну тогда значит будем считать что работает на всех телефонах только первая демка из этой темы, а вторая - только на сименсах
(Offline)
 
Ответить с цитированием
Старый 21.08.2009, 13:34   #15
Tronix
Знающий
 
Регистрация: 26.07.2009
Адрес: Россия, Москва
Сообщений: 318
Написано 103 полезных сообщений
(для 331 пользователей)
Ответ: canvas: аналог GetPixel или как ?

Сообщение от abcdef Посмотреть сообщение
оптимизировал демку Tronix'а
Да, спасибо, понял принципы. Юзал процедуры в основном для читабельности кода. Но что-то там с функцией рисования линии по-моему не так. Как-то она отрывисто получается. Ну да это не важно, я уже забил на эту демку.

Сейчас пробую огонь сделать. Разбираюсь с lib_cnv2 потихоньку.

PS: Спасибо всем за проявленный интерес к теме, всем поставил плюсы
Тему пока попрошу не закрывать, чувствую будут еще вопросы у меня к вам, уважаемые гуру

Последний раз редактировалось Tronix, 21.08.2009 в 13:52.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Canvas Serg_Bloim Программирование 8 03.03.2009 12:47
Screen.Canvas beloff Delphi 3 05.04.2008 12:04
Аналог FloatToString DmT MidletPascal 3 08.11.2007 08:13
Soft в canvas andresyuk_be Основной форум 3 04.08.2007 00:53
Canvas & TextBox stinger25 Основной форум 3 06.02.2006 12:28


Часовой пояс GMT +4, время: 17:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com