Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача изображений в printDocument 
:(
    Опции темы
Vav1lon
Дата 7.3.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Доброго времени суток.

подскажите как передать изображение в  printDocument  а потом передать его printPreviewControl ?
PM MAIL   Вверх
PashaPash
Дата 7.3.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Vav1lon, в него передать не получится - он сам по себе ничего не рисует.
можно подписаться на PrintDocument.PrintPage и там уже все что угодно нарисовать.


--------------------
PM MAIL WWW   Вверх
Vav1lon
Дата 7.3.2010, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Спасибо, покапал в эту сторону помогло...
 сейчас вопрос в другом а как в printPreviewControl1 загнать не сколько страниц, я так понимаю надо  в printPreviewControl1.Document.Container.Add так ли это?
PM MAIL   Вверх
PashaPash
Дата 7.3.2010, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49





--------------------
PM MAIL WWW   Вверх
Vav1lon
Дата 7.3.2010, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



как бы не пробовал все  печатается на 1 листе, изображения накладываются.
работаю с tiff

Код

        private void doc_PrintPage(object sender, PrintPageEventArgs e)
        {
            if (listBox2.SelectedItems.Count != 0)
            {
                foreach (var selectedRows in listBox2.SelectedItems.OfType<String>())
                {
                    e.HasMorePages = true;
                    var itemName = (string)selectedRows;
                    Bitmap imgPrint = new Bitmap(itemName, true);
                    e.Graphics.DrawImage(imgPrint, 0, 0);
                }
            }
            else { MessageBox.Show("Нет выбраных чертежей для отправки на печать."); }
            e.HasMorePages = false;
        }


Это сообщение отредактировал(а) Vav1lon - 8.3.2010, 13:52
PM MAIL   Вверх
PashaPash
Дата 8.3.2010, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



Vav1lon, PrintPage отрисовывает одну страницу. Если по завершению PrintPage значение HasMorePages выставлено в true, то PrintPage вызывается еще раз. 

Ты сейчас отрисовываешь все картинки на первой же странице, потом говоришь что больше страниц нет.

Код должен выглядеть примерно так:
Код

     private void doc_PrintPage(object sender, PrintPageEventArgs e)
        {
            отрисовать i-ю картинку;
            i++;
            if (i < общего количества картинок)
            {
                 e.HasMorePages = true;
            }
        }

Список картинок для отрисовки нужно составлять заранее, перед печатью.


--------------------
PM MAIL WWW   Вверх
Vav1lon
Дата 8.3.2010, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 20.1.2009

Репутация: нет
Всего: нет



Спасибо, задуманное получилось, если кому интересно вот код

Код

int i=0;

        private void bToPrint_Click(object sender, EventArgs e)
        {
            printPreviewControl1.Document = null;
            prDoc = new PrintDocument();
            prDoc.PrintPage += new PrintPageEventHandler(doc_PrintPage);
            prDoc.DocumentName = "Print to Images";
            printPreviewControl1.InvalidatePreview();
            printPreviewControl1.Document = prDoc;

            Arr = new Bitmap[listBox2.SelectedItems.Count];
            int count = 0;
            foreach (var selectedRows in listBox2.SelectedItems.OfType<String>())
            {
                var itemName = (string)selectedRows;
                Arr[count] = new Bitmap(itemName, true);
                count++;
            }
            this.tbPages.SelectedTab = tbPage3;
        }

        private void doc_PrintPage(object sender, PrintPageEventArgs e)
        {
            if (i < listBox2.SelectedItems.Count)
            {
                e.Graphics.DrawImage(Arr[i], 0, 0);
                i++;
                if (i < listBox2.SelectedItems.Count)
                {
                    e.HasMorePages = true;
                }
            }
        }


При каждом входе в doc_PrintPage нужно обнулять i 

Это сообщение отредактировал(а) Vav1lon - 8.3.2010, 16:21
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.