|
|
|||||
Banned
[+4 01.02.09]
[+1 01.02.09] |
Запись изображения в Clipboard
Цинковские методы Clipboard работают только с текстом.
Задача же в том, чтобы поместить изображение в Clipboard для последующей вставки, например, в Word. Пока еще не знаю с какой стороны подойти и соответственно не знаю откуда брать картинку (то ли это будет скриншот-битмапа, то ли просто мувик если возможно, то ли вообще внешний файл, который потом забрасывается в Clipboard). Может даже такая последовательность: снимаем скриншот с мувика (хотя с мувика не выйдет - только с приложения) mdm.Image.ScreenCapture.movieAreaToBmp далее этот файл не знаю как забрасываем в Clipboard ... |
|
|||||
а кто мешает написать dll ,с экспортом API по работе с Clipboardom ? вобще поиск конечно рулит, например на тему "windows API и буфер обмена" в яндексе вторая ссылка ,ведет например сюда где есть пример реализации, на visual basic, собственно если вы знакомы с win api и с стороними языками програмирования, то у вас не составит проблемы, написать dll на удобном для вас языке
zinc прекрасно работает с dll создайте в своей dll ,нужные API, сделайте export и пользуйтесь в zince PS если что, могу завтра к вечеру написать на ассемблере dll
__________________
на каком языке вы пишите? а на каком нужно? |
|
|||||
Banned
[+4 01.02.09]
[+1 01.02.09] |
Цитата:
Другое дело, ФП в Цинке например генерит битмапу. Как эту битмапу достанет из ФП Цинка dll-ка? Так сказать на лету? (это то, что мне нравится) Вот этого я не понимаю. |
|
|||||
listener
|
Можно сделать так:
- по типу сохранения битмапы на сервер загнать ее в стринг с помщью getPixel(); - получившийся стринг, типа "0FD08E1F..." отдать цинку, т.е. длл; - в длл раcпарсить стринг в реальный байт-аррай; - получившийся байт-аррай сконвертить в графический формат .jpg, GDI+ в помощь; - сунуть получившуюся картинку в клипбоард, ну или там в файл, как угодно. Одно могу сказать точно - пункт первый при большой битмапе во флэше будет сильно тормозить. Остальное будет достаточно быстро. Не знаю, как в AS3, там, наверно, пошустрее должно быть... Я так делал, получалось, правда, сохранял картинку в файл .png c прозрачностью, а не в клипбоард, но это несущественно. Большая битмапа (~1000х1000) сохранялась примерно секунд надцать. Замечу, еще, что речь идет именно о битмапе, а не о скрине окна. Скрин окна положить в клипбоард будет побыстрее, само-собой, но только скринить надо не цинком, а опять же из длл, с помощью специально для этого случая написанной функции, родные цинковские только в файл могут сохранять. Сюда можно привесить какую-то обработку скрина (байт-аррая), придется малость попотеть с разными перекодировщиками-конвертировщиками-фильтрами. Вобщем, возможностей тут масса. Можно, например, склеить пару-тройку скринов, разрезать, поменять цветовые характеристики... фотошоп, одним словом. Последний раз редактировалось alexcon314; 02.02.2009 в 23:08. |
|
|||||
Banned
[+4 01.02.09]
[+1 01.02.09] |
alexcon314, а скрин можно снять с неактивного/скрытого окна? Цинк ведь может дополнительные окна открывать?
PS Для AIR есть такая фишка, как запись битмапы в clipboard, а вот в Цинке не дотумкали |
|
|||||
listener
|
Можно, в принципе. Вспомнил вистовскую фичу, когда при наведении на кнопку в таскбаре, подсвечивается уменьшенная копия свернутого в данный момент окна с динамически обновляемым содержанием. Только как в дополнительное окно, скрытое оно или не скрытое, ты отрисуешь нужную графику, ту же битмапу? Ты же ее в основном окне как-то формировать будешь... Можно в дополнительную форму вставить swf-лоадер какой-то...но откуда грузить? Непонятны перспективы..
|
|
|||||
chingachgoog я и имел виду, то что описал alexcon314
тоесть принцип ,конечно же передачи на лету в dll, которая уже все сделает ... )))
__________________
на каком языке вы пишите? а на каком нужно? |
|
|||||
Banned
[+4 01.02.09]
[+1 01.02.09] |
"На лету" - это когда dll залезет внутрь ФП и распотрошит битмапу. А когда передавать во вне строку-описание - это вовсе "не на лету". Тут быстрее будет запись во внешний файл, откуда уже dll перебросит в клипбоард. Но это потенциальное поле для проблем с безопасностью в Виндусе.
Потому возможность загрузить swf/картинку в новое скрытое окно в Цинке и сразу с помощью dll скопировать ее в клипборд пока наиболее интересна. |
|
|||||
брррр, что то мы совсем не о том
ФП, а точнее приложение, при запросе будет вызывать API функцию из dll и передавать ей строку, как раз токи и на лету я конечно не разбирал ,как zinc создает приложение ,но что то мне подсказывает ,что он в таких случаях ,просто добавляет в полученный файл код типа push картинка например в строке call (api) если это не налету то я наверно в танке подсказывает мне то, что получившийся файл является обычным приложением ... а проще всего внедрить в него работу с dll это по стандартной схеме кладем в стек нужные данные вызываем а точнее переходим на полученный адресс радуемся жизни
__________________
на каком языке вы пишите? а на каком нужно? |
|
|||||
listener
|
К несчастью, залезть "внутрь плеера" из длл очень и очень геморно. Дело в том, что не смотря на то, что длл хоть и сидит в адресном пространстве процесса, заполучить указатели на нужные интерфейсы (плеера) из нее, не имея информации как эти итерфейсы инициализировались ... эээ .. словом, можно, но геморно очень. Это отдельная задача, по сложности превосходящая, то что было предложено вначале. Может, я, конечно, ошибаюсь, но не думаю, что сильно...
Я вот что подсмотрел в f-in-box'e. Загрузка данных в плеер из ресурсов, скажем, flv. Там это реализуют примерно так: во флэше создают NetStream, ловят указатель на него в оболочке, когда плеер его создаст (это просто стрим для закачки данных), и пихают в этот стрим свой flv, предварительно вынутый из ресурсов. На том же принципе основан исходник с С++ - законцовкой LocalConnection. Это я к тому, что для выгрузки битмапы можно соорудить что-то навроде.. Однако, f-in-box САМИ хостят плеер, им и карты, то бишь СОМ-интерфесы плеера, в руки. А тут... С отрисовкой в скрытое окно... я тут покумекал.., вобщем я бы за это не взялся. Слишком вычурная конструкция, а значит, скорее всего бесполезная. Последний раз редактировалось alexcon314; 04.02.2009 в 02:38. |
Часовой пояс GMT +4, время: 15:03. |
|
« Предыдущая тема | Следующая тема » |
|
|