Форум
Написать нам
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: as-master  
Работа с картинками
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, а много,то в программе будет храниться слишком большой массив переменных.

Тфу, что меня так на массивы повело? smile Действительно, а нафига?!

as-master прав, проще загружать по отдельности. Ну, нихай будет и мой пример, хоть люди массивы будут осваивать smile

P. S. Кстати, я даже тему с сортировкой массивов создал smile Изучайте!



Вечная память Андрею Сергееву!
 
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
Огромное спасибо!!!!
Все получилочь.
Понял принцып и ошибки smile

Добавлено (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 для копирования или сохранения
картинок только в выделенной етой области cry
как при использовании команды печать обласи.
 
humanoidДата: Вторник, 27 Февраля 2007, 12:51 | Сообщение # 13
Гуманоид
Группа: Проверенные
Сообщений: 406
Репутация: 3
Награды: 1
Статус: Offline
Rostic - года два назад подобными вопросами мучал biggrin biggrin biggrin

http://clubrus.kulichki.net/cgi-bin....tart=45

Пост № 13

Rostic! Ты в фефрале 2005 про это уже спрашивал biggrin biggrin Недозрел, что-ли???


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.

Прикрепления: 38328722.rar (227.7 Kb)


Сообщение отредактировал Омар - Вторник, 27 Февраля 2007, 22:38
 
RosticДата: Среда, 28 Февраля 2007, 10:25 | Сообщение # 17
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
happy Огромное спасибо!!!!!!!!!!
Буду розбераться.

Добавлено (28 Февраля 2007, 10:25)
---------------------------------------------
Плагин просто супер!!!!!!!!!!!!!!
Огромное спасибо!!!!!!!!!!!!
Он рабочий все делает замечательно.
Может видели плагин по по установке картинок с буфера обмена в проект.

 
OmarДата: Среда, 28 Февраля 2007, 12:12 | Сообщение # 18
Группа: Удаленные





Пожалуйста, лишь бы тебе помогло. wink

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
Группа: Удаленные





Незнаю-незнаю, наврядли sad

Quote
Ой, что ж он такой большой?

Ну дык забугорный же wink

Сообщение отредактировал Омар - Среда, 28 Февраля 2007, 13:05
 
RosticДата: Среда, 28 Февраля 2007, 13:24 | Сообщение # 22
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
ScreenShot PlugIn
Может подскажеш как научить етот демо пример сохранять картинка.
biggrin
 
OmarДата: Среда, 28 Февраля 2007, 20:04 | Сообщение # 23
Группа: Удаленные





Короче, когда я его качал там было написано, что он бесплатный, но когда я начал его тестить оказалось что это не так. cry
 
toizyДата: Среда, 28 Февраля 2007, 20:24 | Сообщение # 24
Группа: Удаленные





Quote (Омар)
оказалось что это не так

Так это поддержка jpeg'а недоступна. В остальном полностью функциональный. Кроме того, postcardware означает - оплачиваемый почтовой картой. Т.е. нужно прислать любую почтовую открытку разработчику, и он пришлёт тебе ключик smile Он это дело любит, я частенько встречал такое.
Так что, не парьтесь, господа wink
 
OmarДата: Четверг, 01 Марта 2007, 12:31 | Сообщение # 25
Группа: Удаленные





Я где-то видел, что он (Bokzy) это дело забросил: и сайт и почта не функционируют.
 
RosticДата: Четверг, 01 Марта 2007, 13:53 | Сообщение # 26
Любопытный
Группа: Пользователи
Сообщений: 33
Репутация: 0
Награды: 0
Статус: Offline
Копирует содержимое екрана супер.
Еще раз спасибо.
На русском пример в обменнике на ету тему чтото не работает
для снятия скриншота ScreenShooter v1.2
Снятие фотографии с окна монитора – стандартная операция, которой часто пользуются пользователи компьютера. Причины для этого бывают разные: либо желание сохранить в виде картинки красивый момент в любимой игрушке, либо необходимость послать другу скриншот интересной программы… Вообще, с точки зрения Multimedia Builder, эта функция в нём не нужна, так как это делается одной клавишей «Print Screen» на клавиатуре. Но может ведь и пригодится smile Посему сделан такой модуль, способный снимать картинки как с экрана в целом, так и с активного в момент съёмки окна. К тому же, модуль способен сразу сохранять снимок экрана в графический файл!
написано нормально но толку

Добавлено (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" (Меню "Проект" -> "Внедрённые файлы...").
Все нормально, работает главное сохраняет картинки в папку.
Но почемуто плагин мне понравеился больше .
Жаль что не сохраняет картинки .
Я щитаю тема ета закрыта.
Есть плагин и примеры. smile
 
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.

Поэтому просто достаточно снять указанные галки, чтобы не оптимизировать
анимацию при ее сохранении.

Так что всё просто, на самом деле:)


Да пребудет с вами ММВ!
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: