Работа с картинками
|
|
Rostic | Дата: Вторник, 12 Декабря 2006, 17:23 | Сообщение # 1 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| Как правильно выводить картинки на экран? То есть, имеем примером 10разных картинок и их нужно открыть в одном месте, но чтобы при открытии первой картинки пряталась вторая. Или же при открытии 3картинок пряталась 10тая. То есть, каждая картинка имеет свой номер. Трудность в том состоит, что они должны открываться произвольно. То есть, если есть условие R, то открывается картинка 5, В - то открывается картинка 10, а 5тая закрывается . Как это написать?? Ужасный русский язык у вас! Yuriy А может, он сам не русский? Андрюша
Сообщение отредактировал as-master - Вторник, 12 Декабря 2006, 18:23 |
|
| |
as-master | Дата: Вторник, 12 Декабря 2006, 18:19 | Сообщение # 2 |
Группа: Удаленные
| Не знаю уж, как выглядит твое условие, но делай так. К примеру, ты знаешь номер картинки, которую нужно загрузить в данный момент. Обзовем эту переменную буквой N. Загружаем в переменную Path$ полный путь к картинке с номером N (абсолютный или относительный путь - это уж тебе решать: Path$ = 'C:\Картинки\Картинка' + CHAR(N) + '.jpg' (При этом содержание переменной Path$ будет таким (при номере N равном, например, 5): C:\Картинки\Картинка5.jpg) А дальше даешь команду замены изображения в объекте Bitmap: ReplaceImage("Bitmap","Path$") Всё :)
Сообщение отредактировал as-master - Вторник, 12 Декабря 2006, 18:21 |
|
| |
YURIY | Дата: Вторник, 12 Декабря 2006, 18:34 | Сообщение # 3 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| А в чём проблема, собственно? Вот например, есть у нас 10 картинок с путями: <SrcDir>\Images\image_1.jpg <SrcDir>\Images\image_2.jpg <SrcDir>\Images\image_....jpg <SrcDir>\Images\image_10.jpg Пути для каждой из них заносите в MMB так: Code | path$[i]='Путь_к_картинке' | ,где i - порядковый номер картинки. В данном случае - элемент массива. А ещё проще, если у вас картинки лежат в папке и имеют имена image_номер. Тогда их можно циклом загрузить так: Code | For i=1 To 10 path$[i]='<SrcDir>\Images\image_'+CHAR(i)+'.jpg' Next i | Создайте теперь либо HotSpot, либо Рисунок. Сценарий для кнопки, меняющей изображение в случайно порядке: Code | number=RND(10) If (number<>0) Then ReplaceImage("HotSpot","path$[number]") Else number=1 ReplaceImage("HotSpot","path$[number]") End | HotSpot - ваш объект в MMB, куда картинка будет грузиться. 10 - число картинок для моего примера.
Вечная память Андрею Сергееву!
|
|
| |
as-master | Дата: Вторник, 12 Декабря 2006, 19:15 | Сообщение # 4 |
Группа: Удаленные
| Quote (Yuriy) | Тогда их можно циклом загрузить так: Code For i=1 To 10 path$[i]='<SrcDir>\Images\image_'+CHAR(i)+'.jpg' Next i | В этом примере плохо только одно: если картинок не 10, а много, то в программе будет храниться слишком большой массив переменных. К чему это? Но при небольшом количестве фоток действительно сокращается количество строк кода. А лучше все-таки делать как я написал. То есть для твоего примера со случайностью делать так: Code | N=RND(9)+1 If (N<>0) Then Path$ = 'C:\Картинки\Картинка' + CHAR(N) + '.jpg' ReplaceImage("Bitmap","Path$") End | Тогда в проекте будет торчать в памяти всегда только одна переменная Path$, а не тысяча штук, если, к примеру, имеется 1000 фоток. Добавлено (12 Декабря 2006, 19:15) --------------------------------------------- И еще одно замечание: если использовать объект HotSpot для загрузки фоток, то придется принимать дополнительные меры по сохранению пропорций фоток. А это усложнит сценарий. Так что, чтобы избежать дополнительных сложностей, лучше использовать объект Bitmap, в свойствах которого поставить птицы "Подогнать рисунок под окно" и "Сохранить соотношение размеров". А в качестве начальной картинки загрузить в этот объект малюсенький фрагмент (хоть 2х2 приксела) в формате JPG и цвета, соответствующего цвету фона вашего проекта.
Сообщение отредактировал as-master - Вторник, 12 Декабря 2006, 19:04 |
|
| |
YURIY | Дата: Вторник, 12 Декабря 2006, 20:09 | Сообщение # 5 |
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
| Quote (as-master) | В этом примере плохо только одно: если картинок не 10, а много,то в программе будет храниться слишком большой массив переменных. | Тфу, что меня так на массивы повело? Действительно, а нафига?! as-master прав, проще загружать по отдельности. Ну, нихай будет и мой пример, хоть люди массивы будут осваивать P. S. Кстати, я даже тему с сортировкой массивов создал Изучайте!
Вечная память Андрею Сергееву!
|
|
| |
Rostic | Дата: Среда, 13 Декабря 2006, 01:14 | Сообщение # 6 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| If (A2$ = '157'|A2$ = '158'|A2$ = '159'|A2$ = '160'|A2$ = '161'|A2$ = '162'|A2$ = '163'|A2$ = '164'|A2$ = '165'|A2$ = '166'|A2$ = '167'|A2$ = '168'|A2$ = '169'|A2$ = '170'|A2$ = '171'|A2$ = '172') Then ReplaceImage("Ерогліф","<Embedded>\AniGif.gif") A$ = 'пин' DisplayValue("Display8","A$") End Я пробывал вот так но не получилось. Попробую как Вы написали. В чем тут ошибка
|
|
| |
as-master | Дата: Среда, 13 Декабря 2006, 12:28 | Сообщение # 7 |
Группа: Удаленные
| Ошибка по крайней мере в том, что форматы GIF в качестве картинки ЗАГРУЖАТЬ НЕЛЬЗЯ!!! Только форматы JPG или BMP. А вместо строки Code | If (A2$ = '157'|A2$ = '158'|A2$ = '159'|A2$ = '160'|A2$ = '161'|A2$ = '162'|A2$ = '163'|A2$ = '164'|A2$ = '165'|A2$ = '166'|A2$ = '167'|A2$ = '168'|A2$ = '169'|A2$ = '170'|A2$ = '171'|A2$ = '172') Then | лучше писать так: Code | For n=157 To 172 n$=CHAR(n) If (A2$=n$) Then *** здесь условие End Next n | Особенно когда у тебя диапазон проверки переменной A2$ будет не 15 штук, а все сто пятьдесят :)
Сообщение отредактировал as-master - Среда, 13 Декабря 2006, 12:29 |
|
| |
Rostic | Дата: Четверг, 14 Декабря 2006, 17:37 | Сообщение # 8 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| Огромное спасибо!!!! Все получилочь. Понял принцып и ошибки Добавлено (14 Декабря 2006, 17:17) --------------------------------------------- Огромное спасибо!!!! Все получилось. Понятно теперь принцып. Добавлено (14 Декабря 2006, 17:32) --------------------------------------------- Теу пока не закрывайте. Еще вопрос . Еще о проекте просмотрел Ваш проект Передвижение дочерних окон мышью.mbd И попробывал зделать в новом окне только не одно окно а 2 используя при етом два скрипта изменив название И тут проблема окна открываются нормально но При передвижении мышкой мышка прилипает к окну Нельзя его остановить окно тащится за указателем мышки. И еще когда окно перемещается оно выходит за приделы краев проекта . Все команды проверил несколько раз но не понял в чем дело. Интересние когда разными кнопками открывается несколько подвижных окон. Может от того что я зделал два скрипта. Или лутше все обеденить в один. Добавлено (14 Декабря 2006, 17:37) --------------------------------------------- Как избежать увелечение картинки когда запущен проект. Тоесть выбираем картинку БМП вставляем в форму примером 5см сама картинка 10см Когда в проекте запускаем действие с картинкой примером поворачивание вокруг своей оси то картинка увеличивается сама на розмер 10см. А сама форма 5см. Как быть??
|
|
| |
as-master | Дата: Четверг, 14 Декабря 2006, 17:56 | Сообщение # 9 |
Группа: Удаленные
| Слишком много вопросов сразу в одном посте. Напиши ясно и четко вопрос. И лучше - в отдельной теме и с названием темы, отражающим суть вопроса.Добавлено (14 Декабря 2006, 17:56) ---------------------------------------------
Quote (Rostic) | Когда в проекте запускаем действие с картинкой примером поворачивание вокруг своей оси то картинка увеличивается сама на розмер 10см. | На вопрос о повороте изображений есть четкий ответ в моем уроке 9 "Делаем фотоальбом". Здесь: http://www.mmbuilder.nm.ru/mmb9.html
Сообщение отредактировал as-master - Четверг, 14 Декабря 2006, 17:53 |
|
| |
Rostic | Дата: Пятница, 15 Декабря 2006, 12:43 | Сообщение # 10 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| Спасибо Добавлено (15 Декабря 2006, 12:43) --------------------------------------------- Да просто и понятно XI=ObjectX(Image) YI=ObjectY(Image) LI=ObjectWidth(Image) HI=ObjectHeight(Image) RotateImageRel("Image","-90") MoveObject("Ima ge","XI,YI,LI,HI") Просто понятно и красиво относительно размера
|
|
| |
as-master | Дата: Пятница, 15 Декабря 2006, 15:05 | Сообщение # 11 |
Группа: Удаленные
| Quote (Rostic) | Да просто и понятно | Ну вот, я очень рад :)
|
|
| |
Rostic | Дата: Вторник, 27 Февраля 2007, 11:09 | Сообщение # 12 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| Здраствуйте . Как создать команду: сохранить картинку , или копировать ? У меня чтото не получается. Можно ли использовать область HotSpot для копирования или сохранения картинок только в выделенной етой области как при использовании команды печать обласи.
|
|
| |
humanoid | Дата: Вторник, 27 Февраля 2007, 12:51 | Сообщение # 13 |
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
| Rostic - года два назад подобными вопросами мучал http://clubrus.kulichki.net/cgi-bin....tart=45 Пост № 13 Rostic! Ты в фефрале 2005 про это уже спрашивал Недозрел, что-ли???
Hi, from Moon!
|
|
| |
as-master | Дата: Вторник, 27 Февраля 2007, 13:45 | Сообщение # 14 |
Группа: Удаленные
| Quote (Rostic) | Как создать команду: сохранить картинку , или копировать ? | Сохранить картинку - НИКАК. Только если захватить плагином снятия скриншота. Копировать из окна приложения - тоже НИКАК. Копировать можно только ФАЙЛ. С известным адресом на диске.
|
|
| |
Rostic | Дата: Вторник, 27 Февраля 2007, 14:13 | Сообщение # 15 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| ВСЕМ СПАСИБО. Только если захватить плагином снятия скриншота. Про ето где написано.
|
|
| |
Omar | Дата: Вторник, 27 Февраля 2007, 22:34 | Сообщение # 16 |
Группа: Удаленные
| Rostic держи ScreenShot PlugIn v1.1 Он даже умеет снимать скриншот с объектов MMB. Пока не тестил, плагин от знаменитого Bokzy.
Сообщение отредактировал Омар - Вторник, 27 Февраля 2007, 22:38 |
|
| |
Rostic | Дата: Среда, 28 Февраля 2007, 10:25 | Сообщение # 17 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| Огромное спасибо!!!!!!!!!! Буду розбераться.Добавлено (28 Февраля 2007, 10:25) --------------------------------------------- Плагин просто супер!!!!!!!!!!!!!! Огромное спасибо!!!!!!!!!!!! Он рабочий все делает замечательно. Может видели плагин по по установке картинок с буфера обмена в проект.
|
|
| |
Omar | Дата: Среда, 28 Февраля 2007, 12:12 | Сообщение # 18 |
Группа: Удаленные
| Пожалуйста, лишь бы тебе помогло. Quote | Может видели плагин по по установке картинок с буфера обмена в проект. | Вопрос не понятен, тебе надо что-бы он копировался в Bitmap объект или как.
|
|
| |
Rostic | Дата: Среда, 28 Февраля 2007, 12:16 | Сообщение # 19 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| да что-бы он копировался в Bitmap объект. Есть возможность, или плагин чтобы вставлять в проект на какоето место картинку с буфера обмена. Тоесть плагином что выше скопировал с одной страницы а встарил на другую странице проекта
|
|
| |
toizy | Дата: Среда, 28 Февраля 2007, 13:01 | Сообщение # 20 |
Группа: Удаленные
| Quote (Омар) | держи ScreenShot PlugIn v1.1 | Ой, что ж он такой большой?
|
|
| |
Omar | Дата: Среда, 28 Февраля 2007, 13:03 | Сообщение # 21 |
Группа: Удаленные
| Незнаю-незнаю, наврядли Quote | Ой, что ж он такой большой? | Ну дык забугорный же
Сообщение отредактировал Омар - Среда, 28 Февраля 2007, 13:05 |
|
| |
Rostic | Дата: Среда, 28 Февраля 2007, 13:24 | Сообщение # 22 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| ScreenShot PlugIn Может подскажеш как научить етот демо пример сохранять картинка.
|
|
| |
Omar | Дата: Среда, 28 Февраля 2007, 20:04 | Сообщение # 23 |
Группа: Удаленные
| Короче, когда я его качал там было написано, что он бесплатный, но когда я начал его тестить оказалось что это не так.
|
|
| |
toizy | Дата: Среда, 28 Февраля 2007, 20:24 | Сообщение # 24 |
Группа: Удаленные
| Quote (Омар) | оказалось что это не так | Так это поддержка jpeg'а недоступна. В остальном полностью функциональный. Кроме того, postcardware означает - оплачиваемый почтовой картой. Т.е. нужно прислать любую почтовую открытку разработчику, и он пришлёт тебе ключик Он это дело любит, я частенько встречал такое. Так что, не парьтесь, господа
|
|
| |
Omar | Дата: Четверг, 01 Марта 2007, 12:31 | Сообщение # 25 |
Группа: Удаленные
| Я где-то видел, что он (Bokzy) это дело забросил: и сайт и почта не функционируют.
|
|
| |
Rostic | Дата: Четверг, 01 Марта 2007, 13:53 | Сообщение # 26 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| Копирует содержимое екрана супер. Еще раз спасибо. На русском пример в обменнике на ету тему чтото не работает для снятия скриншота ScreenShooter v1.2 Снятие фотографии с окна монитора – стандартная операция, которой часто пользуются пользователи компьютера. Причины для этого бывают разные: либо желание сохранить в виде картинки красивый момент в любимой игрушке, либо необходимость послать другу скриншот интересной программы… Вообще, с точки зрения Multimedia Builder, эта функция в нём не нужна, так как это делается одной клавишей «Print Screen» на клавиатуре. Но может ведь и пригодится Посему сделан такой модуль, способный снимать картинки как с экрана в целом, так и с активного в момент съёмки окна. К тому же, модуль способен сразу сохранять снимок экрана в графический файл! написано нормально но толкуДобавлено (01 Марта 2007, 13:50) --------------------------------------------- нужно еще внедрить файл Для подробностей смотрите пример в архиве и не забудьте в проект внедрить файл - "ScreenShoter v1.2.exe" (Меню "Проект" -> "Внедрённые файлы..."). Добавлено (01 Марта 2007, 13:53) --------------------------------------------- Только тогда будет работать и сохранять картинки в папку. Плагин конешно лутше написан. Но для сохранения можно обеденить
|
|
| |
as-master | Дата: Четверг, 01 Марта 2007, 16:48 | Сообщение # 27 |
Группа: Удаленные
| Quote (Rostic) | написано нормально но толку | В каком смысле?
|
|
| |
Rostic | Дата: Четверг, 01 Марта 2007, 17:23 | Сообщение # 28 |
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
| я просто пропустил файл где написан нужно еще внедрить файл Для подробностей смотрите пример в архиве и не забудьте в проект внедрить файл - "ScreenShoter v1.2.exe" (Меню "Проект" -> "Внедрённые файлы..."). Все нормально, работает главное сохраняет картинки в папку. Но почемуто плагин мне понравеился больше . Жаль что не сохраняет картинки . Я щитаю тема ета закрыта. Есть плагин и примеры.
|
|
| |
aSanN | Дата: Вторник, 17 Апреля 2007, 07:42 | Сообщение # 29 |
Поднаторевший
Группа: Проверенные
Сообщений: 91
Репутация: 2
Награды: 0
Статус: Offline
| Как настроить GIF анимацию в программе Adobe ImageReady CS для правильного отображения в Multimedia Builder? Потыкав часок по кнопкам Adobe ImageReady CS, я обнаружил какие элементы нужно настроить, чтобы анимашки отображалась корректно. 1. Нужно изменить глубину цвета на 128. (окно Optimize/ Preset: меняем на GIF 128 Dithered или на GIF 128 No Dither) 2. Нужно убрать флажок с Transparency (окно Optimize/ Transparency/ Transparency) Оптимизируем в гиф, вставляем, смотрим, что получилось… Если Гиф отображается именно так, как вы этого хотели, то замечательно. Если же он начал дергаться, меняя свой размер, то тут я предлагаю следующее: 3: Нужно создать идеально прозрачный слой, который будет появляться каждый второй кадр. При помощи карандаша нарисуйте точку в верхнем левом и в нижнем правом углу слоя. Прозрачность точки должна быть в районе 20%. Цвет точек подбирается под цвет фона, но они должны быть либо темнее, либо светлее его, чтобы Балдер не принял эти цвета за один. Если вас утруждает 3-ий пункт, то можно воспользоваться советом из статьи «Баги ММВ» - т. е. подложить в ММВ под не корректный гиф картинку с любым ее кадром.
|
|
| |
as-master | Дата: Вторник, 17 Апреля 2007, 20:50 | Сообщение # 30 |
Разводящий
Группа: Модераторы
Сообщений: 2337
Репутация: 101
Награды: 5
Статус: Offline
| Ничего этого делать не нужно, если создаешь gif файл в этой программе с нуля. В самом начале нужно вызвать диалог оптимизации анимации - Optimize Animation - и в нём снять галки с обоих пунктов - Bounding Box и Redundant Pixel Removal. Именно "благодаря" вот этой оптимизации gif и отображается некорректно в ММВ. Первый названный пункт обрезает каждый кадр по границам области, которая меняется в предыдущем окне, а второй пункт делает прозрачными все пикселы в кадре, которые не меняются в предыдущем кадре. Таким образом. в анимашке образуется много "дырок" в кадрах на тех местах, где цвет пиксела не изменяется от кадра к кадру. И вот эти-то самые "дырки" мы и видим в ММВ при просмотре анимации: они проявляются в виде мерцания, пропадания частей изображения при просмотре gif. Поэтому просто достаточно снять указанные галки, чтобы не оптимизировать анимацию при ее сохранении. Так что всё просто, на самом деле:)
Да пребудет с вами ММВ!
|
|
| |