![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Подскажите плиз.
Есть форма (WinForms) выполненная в VisualStudio C#, на ней имеется компонент AxShockwaveFlashObjects в который подгружается внешний swf-файл. Также на этой форме имеется кнопка вывода на печать (без кода, разумеется). Если кто-то занимался подобным вопросом - вывод в печать изображение созданное в swf-компоненте, поделитесь плиз в каком направлении копать, буду рад любой информации, коду на C#, ссылке и т.д. |
|
|||||
|
listener
|
Самый простой вариант - когда принтскринится область окна, занимаемая плеером (axSWF - имя флешконтрола на форме).
Bitmap b;
private void btnPrint_Click(object sender, EventArgs e)
{
b = new Bitmap(axSWF.Size.Width, axSWF.Size.Height);
Graphics axg = Graphics.FromImage(b);
Point p = axSWF.PointToScreen(axSWF.Location);
axg.CopyFromScreen(p, new Point(0,0), axSWF.Size);
axg.Dispose();
PrintDocument prnDoc = new PrintDocument();
prnDoc.PrintPage += new PrintPageEventHandler(prnDoc_PrintPage);
prnDoc.Print();
}
void prnDoc_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
g.DrawImage(b, 0, 0);
}
Если же имеется в виду что-то посложнее, то боюсь потребуется печатать из ролика средствами самого плеера, нужно исходник ролика править. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Впринципе я потихоньку подхожу к тому что копать надо в самом SWF.
Как я представляю мне в конечном итоге потребуется изображение выведенное в SWF, каким-то образом его необходимо преобразовать в BitmapData, но с увеличением разрешения, не экранное а большее, затем конвертировать в png-файл, я вот тут нарыл в Инете класс: http://code.google.com/p/as3corelib/...ncoder.as?r=25 сохранить этот png, затем из флеша дать команду в форму C# о загрузке этого файла, ну а уже в форме, там разберусь как-нить. Если всё обобщить то: В SWF-файле есть некоторое количество спрайтов с исходным изображением выполненным методом graphics и есть спрайт приёмник. Требуется из спрайтов-исходников передать все изображения в спрайт приёмник (через BitmapData.copyPixels - ???), затем получить из спрайта приёмника BitmapData, каким-то образом увеличить его размеры(без потери качества), ну а потом генерить png. Подскажите если можно, как правильно из одного спрайта-исходника передать изображение в другой спрайт-приёмник и получить BitmapData большее чем экранное. Опыт работы с классами Bitmap и BitmapData есть, но небольшой, хотелось бы его расширить. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Фишка в том, что хотя приложение и настольное но использовать приходиться только плеер, об AIR речи не идёт, т.к. насколько я понимаю устанавливать или не устанавливать AIR решает пользователь, в то время как плеер установлен примерно у 98.999% пользователей.
Задача в том, что бы при запуске приложения запросы по установке дополнительного обеспечения, пусть и бесплатноскачиваемого свести к минимуму. Так например недавно установленную VisualStudio C# 2012 Express пришлось снести и вернуться к VisualStudio C# 2010 Express, причина в том что в VS2012 нельзя создать проект версии 4.0, можно только 4.5, а у большинства пользователей в настоящее время ОС Windows 7, где библиотека Net.Framework 4.0 уже установлена, а 4.5 требуется докачивать. |
|
|||||
|
listener
|
Насколько мне известно, AIR позволяет делать билд проекта, в который включается рантайм среды исполнения, т.е. конечному пользователю не придется устанавливать в систему этот рантайм, он включается в дистрибутив при таком билде.
Цитата:
Совсем не факт, что этот контрол присутствует в системе, даже в Windows 7. В дистрибутив ОС плеер не включен (по крайней мере в официальный от MS). Вполне вероятна ситуация, когда пользователь для просмотра инернет-сайтов не использует IE, благо альтернатив предостаточно. Тогда и ActiveX в его системе не будет. Кроме того, если ваше приложение чувствительно к версии плеера, то легко можно попасть на систему с давно не обновлявшимся плеером. Если разберетесь с AIR (см. начало поста), то вы получите гарантированно запускаемое приложение, вне зависимости от состояния целевой ОС. При этом ничего грузить и дополнительно устанавливать пользователю не придется. Тем более .NET Framework, он вообще не нужен. Вобщем, C# при всей его привлекательности, вряд ли позволит вам достигнуть такого результата. Из альтернатив можно предложить только разного рода оболочки типа MDM Zinc, f-in-box, но за них придется платить. собственно, вот. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Мне очень нравится Flash, впервые я попробовал его в работе в 2005г. Тогда была версия Flash MX 2004. Собственно и программировать я учился осваивая AS2. О чём это я? Ах да, по поводу C#.
Цитата:
|
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Протянул битмап-данные из флеша в форму C# при помощи XML-строки и вывел изображение в форме в пик-боксе, долго правда работает.
А C# и FlashDevelop при том что FD написан на C#. AIR, спору нет хорошая технология но используя FD для AIR особо не разгонишься. |
|
|||||
|
listener
|
Цитата:
Цитата:
Цитата:
Вобщем, не заладилось что-то ... Нравится на ровном месте шишки огребать - дело ваше. Хотя, копаться в разных там ActiveX и WinForms тоже интересно в какой-то степени. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|