Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
KOsTTTT
1 / 1 / 1
Регистрация: 23.10.2009
Сообщений: 17
#1

Неточность при выводе на печать

17.02.2015, 16:50. Просмотров 313. Ответов 2
Метки нет (Все метки)

При выводе линии 5 см по горизонтали выводится точно, а по вертикали 4.9 см. Если по вертикали выводить длиннее линию, то погрешность накапливается.
В чем может быть проблема?
Вот кусок кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
           //___________создание буфера для метафайла________________
            using (MemoryStream stream = new MemoryStream())
            {
                using (Graphics screenBufferGraphics = this.CreateGraphics())
                {
                    float dpx = screenBufferGraphics.DpiX;
                    float dpy = screenBufferGraphics.DpiY;
                    IntPtr deviceContextHandle = screenBufferGraphics.GetHdc();
                    mwf = new Metafile(
                        stream,
                        deviceContextHandle,
                        new RectangleF(0, 0, (297 * dpx)/25.4), (297 * dpy)/25.4)),
                        MetafileFrameUnit.Pixel,
                        EmfType.EmfPlusDual);
                    screenBufferGraphics.ReleaseHdc();
                }
            }
 
            //________________________________________________________
            Graphics g1 = Graphics.FromImage(mwf);
 
          //  Console.WriteLine("Разрешение g1.DpiX  = " + g1.DpiX);//разрешение равно 96
            g1.SmoothingMode = SmoothingMode.HighQuality;
            g1.InterpolationMode = InterpolationMode.HighQualityBicubic;
            g1.PixelOffsetMode = PixelOffsetMode.HighQuality;
            g1.CompositingQuality = CompositingQuality.HighQuality;
            metafileHeader = mwf.GetMetafileHeader();
            g1.ScaleTransform(
              metafileHeader.DpiX / g1.DpiX,
              metafileHeader.DpiY / g1.DpiY);
 
            g1.PageUnit = GraphicsUnit.Pixel;
 
            Pen pen5 = new Pen(Color.FromArgb(70,0,0,0), 0.1f);//
            double iii;
            iii = (g1.DpiX/25.4) *50.0 + 100;
           // iii = 50 + 100;
            g1.DrawLine(pen5, 100f, 100f, (float)(iii), 100f);
            Console.WriteLine("Горизортальная черта"+iii);
            iii = (g1.DpiY / 25.4) * 50.0 + 100;
            g1.DrawLine(pen5, 100f, 100f, 100f, (float)iii);
            Console.WriteLine("Вертикальная черта" + iii);//Выводится такое же значение, как для горизонтальной
//линии
 
 
            pen5.Dispose();
 
 
            pictureBox1.Image = mwf;
            g1.Dispose();
Вот событие вывода на печать.
C#
1
2
3
4
5
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            e.Graphics.DrawImage(mwf, new Point(0,0));
            e.Graphics.Dispose();
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2015, 16:50
Ответы с готовыми решениями:

Формат строки при выводе из БД
Здравствуйте! Из БД в datagridview вывожу данные, через SqlDataAdapter...

зависает при выводе на forms
Доброго времени суток! Проблема в следующем: Имеется небольшой кусок...

Задержка при выводе в TextBox
Всем привет. У меня есть TextBox, который постепенно заполняется. Я хочу...

Ошибка при выводе Dictionary в DataGridView
При попытке вывести Dictionary в DataGridView выводит ошибку - Индекс за...

Ошибка при выводе изображения в DataGrid
Пытаюсь вывести изображение в datagrid, выдает ошибку недопустимое приведение...

2
ViterAlex
6413 / 3613 / 1482
Регистрация: 11.02.2013
Сообщений: 7,964
Завершенные тесты: 3
18.02.2015, 03:40 #2
Может стоит использовать PageUnit.Display?
0
KOsTTTT
1 / 1 / 1
Регистрация: 23.10.2009
Сообщений: 17
18.02.2015, 17:07  [ТС] #3
А что с PageUnit.Display точнее получается? Такое перечисление есть для PageUnit, но нету для MetafileFrameUnit.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2015, 17:07

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

ListBox выдает при выводе результата
Спрашивал уже про этот уже код...

Изменение TextBox недоступно при выводе в цикле
когда я ввожу что-то в textBox то после нажатии на кнопку он становится не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru