Member 13153537 Ответов: 1

Как распечатать значения на банковском чеке из windows forms в приложении C# windows


У меня есть winform в этом поле выбора даты и времени,pay name ,amount и rupeesinwords.
то, что я хочу, это я кладу пустой банковский чек в принтер и заполняю форму и нажимаю кнопку печати я ввел данные, которые заполняют соответствующие места на банковском чеке
например, поля даты дата и имя платежа место имя платежа вот так.Как это сделать.Я попробовал какой-то код payname, и рупии должны двигаться ниже, оставаясь нормально работающими.Если кто-то уже сделал это, пожалуйста, помогите мне.заранее спасибо.

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

private void btnprint_Click(object sender, EventArgs e)
     {
       PrintDocument p = new PrintDocument();
       p.PrintPage += delegate(object sender1, PrintPageEventArgs e1)
      {
        e1.Graphics.DrawString(PrintDate, new Font("verdana", 10), new
    SolidBrush(Color.Black), new RectangleF(620, 3,
    p.DefaultPageSettings.PrintableArea.Width,
    p.DefaultPageSettings.PrintableArea.Height));
    e1.Graphics.DrawString(AccountPayee, new Font("verdana", 10), new
    SolidBrush(Color.Black), new RectangleF(20, 30,
    p.DefaultPageSettings.PrintableArea.Width,
    p.DefaultPageSettings.PrintableArea.Height));
    e1.Graphics.DrawString(PrintpayName, new Font("verdana", 10), new
    SolidBrush(Color.Black), new RectangleF(55, 60,
    p.DefaultPageSettings.PrintableArea.Width,
    p.DefaultPageSettings.PrintableArea.Height));
    e1.Graphics.DrawString(PrintRups, new Font("verdana", 10), new
    SolidBrush(Color.Black), new RectangleF(90, 90,
    p.DefaultPageSettings.PrintableArea.Width,
    p.DefaultPageSettings.PrintableArea.Height));
    e1.Graphics.DrawString(PrintAmount, new Font("verdana", 10), new
    SolidBrush(Color.Black), new RectangleF(695, 120,
    p.DefaultPageSettings.PrintableArea.Width,
    p.DefaultPageSettings.PrintableArea.Height));
     };

OriginalGriff

И что же?
Что он делает, чего вы не ожидали, или не делает, что вы сделали?
Какая помощь вам нужна?

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

Member 13153537

Мой вопрос заключается в том, что я помещаю банковский чек на принтер и создаю какие-то строки для даты, имени платежа, суммы и текста rupessinwords.Если я нажму кнопку Распечатать, то строки будут помещены в поле Дата банковского чека напротив даты и сумма напротив суммы, как это.как получить размеры тех мест, как это сделать, пожалуйста, помогите мне, я попробовал выше код.

1 Ответов

Рейтинг:
6

OriginalGriff

Цитата:
Мой вопрос заключается в том, что я помещаю банковский чек на принтер и создаю какие-то строки для даты, имени платежа, суммы и текста rupessinwords.Если я нажму кнопку Распечатать, то строки будут помещены в поле Дата банковского чека напротив даты и сумма напротив суммы, как это.как получить размеры тех мест, как это сделать, пожалуйста, помогите мне, я попробовал выше код.


Вы измеряете чек и точно определяете, куда должны идти нити. Для простоты используйте дюймы: система измерения по умолчанию для графических контекстов PrintDocument в 1/100 дюйма на точку. Таким образом, местоположение (55, 60) будет находиться в 0,55 дюйма слева и в 0,60 дюйма сверху.

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

Но сделайте себе одолжение: Абстрагируйте код печати проверки в отдельный класс и вызовите метод, передающий соответствующий графический контекст и элементы для печати, вместо того чтобы встроенно делегировать код: это значительно облегчает жизнь, когда позже потребуются изменения.
И не создавайте новые элементы шрифта таким образом - они являются дефицитными ресурсами и должны быть правильно утилизированы, иначе ваше приложение быстро исчерпает память. Создание их каждый раз при печати-это рецепт непредсказуемого сбоя приложения.


Member 13153537

Большое вам спасибо за Вашу поддержку.

OriginalGriff

Пожалуйста!

Member 13153537

Как только вы закончите подготовку объектов прямоугольника, пожалуйста, поделитесь со мной.заранее спасибо.

OriginalGriff

Я не могу сделать это для вас - у меня нет доступа к вашим чекам!
Достаньте линейку, начните измерять и создайте соответствующие прямоугольные объекты.

Dave Kreskowiak

Так сколько же кофе вы выплюнули на монитор? :)

OriginalGriff

Нет-моя чашка была пуста. :смеяться:

Member 13153537

Каждый BankCheque копировать иметь такие же меры.Я кладу банковский чек на принтер и нажимаю печать.Я попробую себя.Спасибо.

OriginalGriff

Нет, не так: для чеков нет "единого стандартного размера", а тем более для расположения полей внутри них. Каждый банк выпускает свои собственные чеки, и они (как правило) сотрудничают в производстве аналогичных чеков в пределах страны - но закон не требует этого, и даже в Великобритании потребительские чеки имеют разный размер по сравнению с государственными чеками (и даже разные департаменты в одном и том же правительстве используют разные размеры и места расположения полей, как удобно для их систем).