Member 12620816 Ответов: 2

Распечатайте еще одно изображение на второй странице в C#


как напечатать второе изображение на второй странице печатного документа?.
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
    {
        Graphics graphics = e.Graphics;

        Image bgFront = ((PictureBox)pictureBox_IDFront).Image;
        e.Graphics.DrawImage(bgFront, 0, 0, 212, 337);


        Image bgBack = ((PictureBox)pictureBox_IDBack).Image;
        e.Graphics.DrawImage(bgBack, 212, 0, 212, 337);
    }

я хочу напечатать второе изображение на другой странице. для этого мне понадобится всего 2 страницы. изображение спереди и сзади. каждая страница включает в себя некоторую строку, как это для второй страницы. задняя страница.
e.Graphics.DrawString("Employee Information", printFont, Brushes.Black, y, x);
        x = x + (printFont.Size + spacing);
        e.Graphics.DrawString("Name: " + this.label_FullName.Text, printFont, Brushes.Black, y, x);
        x = x + (printFont.Size + spacing);
        e.Graphics.DrawString("Address: ", printFont, Brushes.Black, y, x);

большое вам спасибо за вашу помощь.

Что я уже пробовал:

я попробовал e. hasmorepages, но не знаю, куда девать свои коды. спасибо.

Richard MacCutchan

Вам нужно добавить код к вашему методу печати, чтобы проверить, на какой странице вы находитесь, когда он вызывается.

Member 12620816

это моя проблема. я не знаю, как определить, на какой странице Я нахожусь. можете ли вы, пожалуйста, показать его мне? Извините. я уже несколько недель пытаюсь это сделать. каждый раз, когда я использую hasmorepages, я получаю все больше неограниченных страниц. извините за мой английский. спасибо.

Richard MacCutchan

Создайте счетчик, который позволит вам узнать, на какой странице вы находитесь.

Member 12620816

int pages = 1;
если (страницы == 1)
{
Image bgFront = ((PictureBox)pictureBox_IDFront).Изображение;
е.Графика.DrawImage(bgFront, 0, 0, 212, 337);
страницы++;
е.HasMorePages = истина;
}
ещё
{
Image bgBack = ((PictureBox)pictureBox_IDBack).Изображение;
е.Графика.DrawImage(bgBack, 212, 0, 212, 337);
страниц = 0;
e. HasMorePages = false;
}


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

Richard MacCutchan

См. объяснение Дункана ниже. Количество страниц должно быть на уровне класса, а не локально для этого метода.

Member 12620816

я все понял.. большое вам спасибо за ваше время. :)

2 Ответов

Рейтинг:
0

Duncan Edwards Jones

Быстро прочтите: Абсолютное руководство для начинающих по печати в .NET[^]

Маршрутизация PrintPage вызывается один раз для каждой напечатанной страницы и будет продолжаться, если E.HasMorePages имеет значение True

Вам нужна объявленная переменная количества страниц вне этой рутины что вы обновляете и - если pagecount = 2, то e. HasMorePages = False

Вы также можете использовать эту же переменную, чтобы решить, какое изображение печатать.


Member 12620816

спасибо. :)

Рейтинг:
0

OriginalGriff

Когда вы выполняете многостраничную печать, вы сами решаете, какую страницу вы печатаете в любой момент, как показано в MSDN: Как распечатать многостраничный текстовый файл в Windows Forms[^]
Этот пример печатает из строки и удаляет из нее напечатанную часть для следующего раза, но это точно такой же принцип с изображениями: либо сохраните переменную уровня класса, которая сообщает вам, на какой странице вы находитесь, либо настройте коллекцию изображений для печати и удалите каждую из них из коллекции при печати.


Member 12620816

спасибо. :)

OriginalGriff

Пожалуйста!