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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Печать PictureBox, нужно распечатать сожержимое PictureBox 
V
    Опции темы
kuller
Дата 3.5.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Расскажите пожалуйста как распечатать содержимое PictureBox. К примеру в нем находиться изображение. Как мне распечатать его?
Код

 // показываем окно настройки печати
                PrintDocument printDoc = new PrintDocument();
                PrintDialog dlg = new PrintDialog();
                dlg.Document = printDoc;
                if (dlg.ShowDialog() != DialogResult.Cancel)
                {
                   Я нашел на форуме такой вот элемент печати, но незнаю что вот сюда вставить пробывал разные варианты не прокатило, помогите кто знает как это сделать.
                    printDoc.Print();
                }

PM MAIL   Вверх
mr.DUDA
Дата 3.5.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Код
        void РаспечататьПикчербокс()
        {
            // показываем окно настройки печати
            PrintDocument printDoc = new PrintDocument();
            PrintDialog dlg = new PrintDialog();
            dlg.Document = printDoc;
            if (dlg.ShowDialog() != DialogResult.Cancel)
            {
                printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
                printDoc.Print();
            }
        }

        void printDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(pictureBox1.Image, Point.Empty);
        }



--------------------
user posted image
PM MAIL WWW   Вверх
kuller
Дата 3.5.2008, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mr.DUDA, ОГРОМНОЕ СПАСИБО .... работает, а можно, точнее есть там какое то свойство чтобы ИЗОБРАЖЕНИЕ печаталось на листке не как он иедет стоя а как на АЛЬБОМНОМ ... ну как изображение обычно????
PM MAIL   Вверх
mr.DUDA
Дата 3.5.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Повернуть картинку можно так:
Код
e.Graphics.RotateTransform(90);
e.Graphics.DrawImage(pictureBox1.Image, Point.Empty);

Угол поворота можно менять, так же как и смещение от угла листа до края картинки (передав его вместо Point.Empty). Если нужно масштаб изменить, можно воспользоваться другой версией метода DrawImage, принимающей Rectangle.


--------------------
user posted image
PM MAIL WWW   Вверх
kuller
Дата 4.5.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mr.DUDA,  Огромное спасибо)

Добавлено через 9 минут и 35 секунд
Во приколы 
Когда было вот так
Код

//Печать изображения
        private void печатьИзображенияToolStripMenuItem_Click(object sender, EventArgs e)
        {
                // показываем окно настройки печати
                PrintDocument printDoc = new PrintDocument();
                PrintDialog dlg = new PrintDialog();
                dlg.Document = printDoc;
                if (dlg.ShowDialog() != DialogResult.Cancel)
                {
                    printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
                    printDoc.Print();
                }
        }
        
        void printDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(pictureBox1.Image, 20,20); //Point.Empty
        }

ВСЕ ПЕЧАТАЛОСЬ а вот потом изменил одну строчку добавил насчет поворота
Код

//Печать изображения
        private void печатьИзображенияToolStripMenuItem_Click(object sender, EventArgs e)
        {
                // показываем окно настройки печати
                PrintDocument printDoc = new PrintDocument();
                PrintDialog dlg = new PrintDialog();
                dlg.Document = printDoc;
                if (dlg.ShowDialog() != DialogResult.Cancel)
                {
                    printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
                    printDoc.Print();
                }
        }
        
        void printDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.RotateTransform(90);
            e.Graphics.DrawImage(pictureBox1.Image, 20,20); //Point.Empty
        }

ПЕРЕСТАЛО ПЕЧАТАТЬ))))
PM MAIL   Вверх
mr.DUDA
Дата 5.5.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



kuller, может оно вылазит за границы области печати, попробуй угол поменять например на -90.


--------------------
user posted image
PM MAIL WWW   Вверх
kuller
Дата 5.5.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mr.DUDA, ЛОГИЧНО))))
Сейчас попробую))))
Точно непонятно же в какую сторону он повернул на 90 градусов)))

Добавлено через 9 минут и 9 секунд
mr.DUDA, не что то тут не то ....
-90 пробывал 
270 пробывал 
некатит
значит дело в чем то другом(
PM MAIL   Вверх
mr.DUDA
Дата 5.5.2008, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Видать нужно ещё сместить начало координат к центру вращения. Методом тыка подобрал нужную комбинацию трансформаций:
Код
            e.Graphics.TranslateTransform(_pictureBox.Image.Height, 0);
            e.Graphics.RotateTransform(90);
            e.Graphics.DrawImage(pictureBox1.Image, Point.Empty);


Потренироваться можно, добавив на форму панель, подписавшись на её событие Paint и вставив туда аналогичный код.


--------------------
user posted image
PM MAIL WWW   Вверх
kuller
Дата 5.5.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



mr.DUDA, Спасибо)))
Я методом тыка вот подобрал что:
Код

void printDoc_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.TranslateTransform(pictureBox1.Image.Height, 0);
            e.Graphics.RotateTransform(90);
            e.Graphics.DrawImage(pictureBox1.Image, 10,-450);
        }

Так он печатает ГОРИЗОНТАЛЬНО и почти от верхнего левого угла)))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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