|
13.05.2011, 00:57
|
#1
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Lib_imgs: работа с изображениями
изучать java в отсутствие интернета и учебников, по стандартным примерам sdk и багрепортам компилятора - всё одно, что учить казахский по инструкции на освежителе воздуха, сидя на горшке. вроде и большинство букв знакомы, и тужишься, а выходит что-то... ну, что всегда там выходит... изучал этот забавный язык и писал либу дня три, так что, как всегда - сделано ногами...
баловался, пытаясь повторить основные библиотеки, работающие с графикой -Lib_alpha и Lib_beta - с которыми я чаще всего работаю. собрать в одну кучку.
ну и еще продублировал работу с битмапом. тут можно запихать в память в виде массива точек 2 картинки, чтобы проводить их попиксельную обработку или смешивание из MP.
это для работы с пикселями напрямую из MP. вдруг эффекты какие захотите сами создать в MP ..)
потом добавил пару функций - в т.ч. рисовалку картинки на другой картинке. из-за них и выкладываю. вдруг кому понадобится.
исходники прилагаются
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
Последний раз редактировалось barsunduk, 16.11.2011 в 22:58.
Причина: подправил, добавил...
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо barsunduk за это полезное сообщение:
|
|
13.05.2011, 13:34
|
#2
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
/* Lib_imgs (c) barsunduk май, норябрь 2011 библиотека для работы с изображениями */ // ****************************************************************** // функции работы с картинками // копирует часть экрана, вместо ширины и высоты указывать координаты второго угла function copyxxyy(x1, y1, x2, y2: integer): image; // возвращает экран function copyscr: image; // копировать часть картинки function copyrect(img: image; x, y, w, h: integer): image; // установить текущий цвет экрана procedure setcolorint(col: integer); // установить текущий цвет экрана (в 16-ричном виде) procedure setcolorhex(col: string); // рисует картинку imgSource на картинке imgDest function draw2image(imgSource, imgDest: image; x, y: integer): image; // создает прозрачную картинку function createimage(w, h: integer): image; // изменить размер картинки function resize(img: image; w, h: integer): image; // установить цвет procedure setcolorint(col: integer); // установить цвет procedure setcolorhex(col: string); // быстрая заливка экрана цветом col procedure cls(col: integer); // заливка экрана полупрозрачным цветом col procedure clsa(col: integer); // нарисовать точку на экране (можно полупрозрачную) procedure point(x, y, col: integer); // получить цвет точки экрана function getpoint(x, y: integer): integer; // установить цвет пера для рисования на картинках procedure imgsetcolor(color: integer); // получить цвет пера для рисования на картинках function imggetcolor: integer; // установить непрозрачность пера для рисования на картинках (0/1) procedure solid(value: integer); // получить состояние непрозрачности пера для рисования на картинках (0/1) function getsolid: integer; // линия на картинке function imgline(img: image; x1, y1, x2, y2: integer): image; // прямоугольник на картинке function imgrect(img: image; x, y, w, h: integer): image; // закрашенный прямоугольник на картинке function imgfillrect(img: image; x, y, w, h: integer): image; // эллипс на картинке function imgellipse(img: image; x, y, w, h: integer): image; // залитый эллипс на картинке function imgfillellipse(img: image; x, y, w, h: integer): image; // треугольник на картинке function imgtriangle(img: image; x1, y1, x2, y2, x3, y3: integer): image; // закрашенный треугольник на картинке function imgfilltriangle(img: image; x1, y1, x2, y2, x3, y3: integer): image; // заливка на картинке function imgfill(img: image; x, y: integer): image; // сектор на картинке function imgarc(img: image; x, y, w, h, a1, a2: integer): image; // кривая на картинке (все опорные точки лежат на кривой) function imgbow(img: image; x1, y1, x2, y2, x3, y3: integer): image; // кривая на картинке (2-я опорная точка не лежит на кривой) function imgbezier(img: image; x1, y1, x2, y2, x3, y3: integer): image; // заливка экрана procedure scrfill(x, y); // получить цвет точки картинки (медленная функция) function getimagepoint(img: image; x, y: integer): integer; // меняет каналы каждого пикселя, прибавляя к ним значения (da, dr, dg, db) // т.е. если все значения задать = 0, только da = -128 - можно в половину уменьшить прозрачность function addargb(img: image img; da, dr, dg, db: integer): image; // устанавливает прозрачность всех пикселов картинки // (кроме совершенно прозрачных) function setalpha(img: image img; a: integer): image; // ****************************************************************** // битмапы, работа с пикселями картинки // создать битовую карту 1 procedure bmp1create (w, h: integer); // удалить битовую карту procedure bmp1free; // затолкать в битмап картинку (можно использовать вместо bmpcreate) // размеры битмапа изменятся под размер картинки procedure bmp1setimage(img: image); // создать картинку из битмапа function bmp1getimage: image; // установить пиксель[x, y] в цвет col procedure setpixel1(x, y, col: integer); // извлечь пиксель [x, y] function getpixel1(x, y: integer): integer; // заливка (можно сделать полупрозрачную) procedure bmp1fill(x, y, col: integer); // линия (можно сделать полупрозрачную) procedure bmp1line(x1, y1, x2, y2, col: integer); // дуга procedure bmp1bow(x1, y1, x2, y2, col: integer); // возвращает ширину битмапа function bmp1width: integer; // возвращает высоту битмапа function bmp1height: integer; // создать битовую карту 2 procedure bmp2create (w, h: integer); // удалить битовую карту procedure bmp2free; // затолкать в битмап картинку (можно использовать вместо bmpcreate) // размеры битмапа изменятся под размер картинки procedure bmp2setimage(img: image); // создать картинку из битмапа function bmp2getimage: image; // установить пиксель[x, y] в цвет col procedure setpixel2(x, y, col: integer); // извлечь пиксель [x, y] function getpixel2(x, y: integer): integer; // заливка (можно сделать полупрозрачную) procedure bmp2fill(x, y, col: integer); // линия (можно сделать полупрозрачную) procedure bmp2line(x1, y1, x2, y2, col: integer); // дуга procedure bmp2bow(x1, y1, x2, y2, col: integer); // возвращает ширину битмапа function bmp2width: integer; // возвращает высоту битмапа function bmp2height: integer; // создать битовую карту 2 procedure bmpcreate (w, h: integer); // удалить битовую карту procedure bmp2free; // ******************************************************** // функции, которые могут пригодиться... или не пригодиться // выделение каналов: function getAlpha(col: integer): integer; function getRed(col: integer): integer; function getGreen(col: integer): integer; function getBlue(col: integer): integer; // каналы => integer function argb2int(alpha, red, green, blue: integer): integer; // результат наложения цветов с учетом степени прозрачности обоих цветов function pixMix(colSrc, colBack: integer): integer; // Copy как в Delphi с защитой от дурака function sCopy(s: string; offset, count: integer): string; // Delete как в Delphi с защитой от дурака function sDelete(s: string; offset, count: integer): string; // попатченый перевод из HEX в INT, не теряет старший байт function hex2int(hex: string): integer; // попатченый перевод из HEX в INT, не теряет старший байт function int2hex(i: integer): string;
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
Последний раз редактировалось barsunduk, 16.11.2011 в 22:59.
Причина: поправил, добавил...
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо barsunduk за это полезное сообщение:
|
|
14.05.2011, 00:16
|
#3
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Неправда, 2b or not 2b = 2b
|
(Offline)
|
|
15.05.2011, 01:39
|
#4
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Сообщение от Nerd96
Неправда, 2b or not 2b = 2b
|
долго думал. для верности проверил на калькуляторе. сдается мне, что тебя на... э-э... накололи.
а либу я опять поправил. блин, вот нафига нерабочие варианты в живых оставлять. в итоге выкладываю их, а рабочие вместо них удаляю. сижу потом дописываю по памяти ..(
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
|
(Offline)
|
|
15.05.2011, 02:15
|
#5
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
долго думал. для верности проверил на калькуляторе. сдается мне, что тебя на... э-э... накололи.
|
2b or not 2b
1) not 2b = 0
2) 2b or 0 = 2b
Не?
Print Hex($2b Or (Not $2b)) ;Даёт 2b
|
(Offline)
|
|
15.05.2011, 18:30
|
#6
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
вы - омереканетс?
Сообщение от Nerd96
2b or not 2b
1) not 2b = 0
2) 2b or 0 = 2b
Не?
Print Hex($2b Or (Not $2b)) ;Даёт 2b
|
в нормальном виде not XX, где XX занимает 1 байт, есть побитовое отрицание, то бишь инверсия. боюсь вас огорчить, но not 2b = d4. в правильности моей версии убедитесь, открыв мелкософтовский калькулятор и проверив там. ваше Not $2b дает 0, потому что вы интерпретируете его как логическое выражение:
2B = ( 2B <> 0 ) = True = 1
Not( 2B ) = Not True = False = 0
и не спорьте со мной по этому вопросу, я начал в уме в двоичный код переводить в начале 90-х, когда в российских провинциальных городках в школах появились компьютеры (жалко, что виснущие раз в 5 минут "электроники"). я помнил 10-е значения большинства ассемблерных команд, так как у меня не было компиллятора и я писал графические редакторы на асме, вводя код в 10-м виде прямо из бейсика...
и мне кажется, сейчас вы похожи на того американского ученого из задорновской байки, который считал на калькуляторе 2+2*2, хотя сейчас тот случай, когда калькулятор вернее.
блин, молодой человек, вы бы не могли библиотеку покритиковать вместо подписи. может, что-то не так с ней?
почему у меня вконтакте, скажем, поэты критикуют не философскую составляющую стихов, а уместность моей жoпы на аватарке? а здесь - не содержимое библиотеки, а подпись...
вот вечно оно так ..(
з.ы.:
Сообщение от barsunduk
и не спорьте со мной по этому вопросу, я начал в уме в двоичный код переводить в начале 90-х...
|
- пальцы веером, сопли пузырями. извините, самому стыдно за дешевые понты
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
Последний раз редактировалось barsunduk, 15.05.2011 в 20:45.
Причина: понты
|
(Offline)
|
|
16.08.2011, 02:03
|
#7
|
ПроЭктировщик
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений (для 30 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Не работает либа или я делаю что то не так.
Конкретно не работает работа с пиксилями изображения
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
|
(Offline)
|
|
28.08.2011, 17:22
|
#8
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Сообщение от alexprey
Не работает либа или я делаю что то не так.
Конкретно не работает работа с пиксилями изображения
|
мда, мы нубы такие нубы... половина функций работает только в эмуле, где либа и тестилась ..( в общем и целом получилась лажа, первый блин... удалить бы эту темку к лешему, а то мне чего-то стремно.
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
|
(Offline)
|
|
07.10.2011, 20:38
|
#9
|
ПроЭктировщик
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений (для 30 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Ну я в эмуле и проверял Оо
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
|
(Offline)
|
|
07.10.2011, 23:03
|
#10
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Сообщение от alexprey
Ну я в эмуле и проверял Оо
|
даже в эмуляторе не пашет?.. тогда я хуже нуба, похоже ..(
заманался я что-то на паскале пытаться что-то сделать. надо java осваивать, наверное. и там всё писать...
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
|
(Offline)
|
|
04.11.2011, 19:50
|
#11
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Сообщение от alexprey
Не работает либа или я делаю что то не так.
Конкретно не работает работа с пиксилями изображения
|
сегодня решил посмотреть на телефоне. на эмуле пашет, на теле виснет. поменял функции обращения к пикселам экрана. неожиданно заработало. остальное трогать не стал. рабочий вариант выкладываю в первом посте.
если что-то еще не будет работать, пишите - поправлю.
===
выкинул неработающие на телефоне функции передачи фокуса. превратил процедуру draw2image в функцию. заработала. в принципе, этот трупик еще можно реанимировать, кажется...
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
Последний раз редактировалось barsunduk, 07.11.2011 в 00:00.
|
(Offline)
|
|
12.11.2011, 01:13
|
#12
|
ПроЭктировщик
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений (для 30 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Во теперь работает отлично =)
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
|
(Offline)
|
|
14.11.2011, 17:02
|
#13
|
ПроЭктировщик
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений (для 30 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
А можно добавить функции типа FillRectImg (image img, integer x, y, width, height) ??? Если добавишь, то это огромный зачет!!!!
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
|
(Offline)
|
|
14.11.2011, 19:11
|
#14
|
ПроЭктировщик
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 66 полезных сообщений (для 271 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Сообщение от alexprey
А можно добавить функции типа FillRectImg (image img, integer x, y, width, height) ??? Если добавишь, то это огромный зачет!!!!
|
это, конечно, пожалуйста. только назвал по другому:
// рисует прямоугольник на картинке, смешивая цвет с фоном function imgfillrect(imgSource: Image; x, y, w, h): image;
для пробы можно попробовать полупрозрачные цвета. скажем, fillcolor := hex2int('88008800');
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
Последний раз редактировалось barsunduk, 15.11.2011 в 00:03.
|
(Offline)
|
|
14.11.2011, 19:39
|
#15
|
ПроЭктировщик
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений (для 30 пользователей)
|
Ответ: Lib_imgs: выводим картинку на картинку
Пошел пробовать =)
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:49.
|