Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 1
Регистрация: 11.08.2016
Сообщений: 10

Размытое изображение Bitmap при печати

21.12.2016, 13:55. Показов 2595. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Вывожу UserControl на печать. В результате чётко прорисовываются те элементы, которые видны на форме. Остальные размыты. Прилагаю к сообщению образец отчёта и снимок приложения в момент нажатия на кнопку печати.

Использую следующий код для копирования изображения элементов:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
    private void CaptureScreen()
        {
            switch (iAnzahlSeitenIst)
            {
                case 0:
                    break;
                case 1 :
                    _memoryImage = new Bitmap(panel1.Width, panel1.Height);
                    panel1.BorderStyle = BorderStyle.None;
                    panel1.DrawToBitmap(_memoryImage, new Rectangle(0, 0, panel1.Width, panel1.Height));
                    break;
                case 2:
                    _memoryImage_1 = new Bitmap(programmwahl1.Width, programmwahl1.Height);
                    programmwahl1.DrawToBitmap(_memoryImage_1, new Rectangle(0, 0, programmwahl1.Width, programmwahl1.Height));
 
                    _memoryImage_2 = new Bitmap(programmwahl2.Width, programmwahl2.Height);
                    programmwahl2.DrawToBitmap(_memoryImage_2, new Rectangle(0, 0, programmwahl2.Width, programmwahl2.Height));
 
                    _memoryImage_3 = new Bitmap(programmwahl3.Width, programmwahl3.Height);
                    programmwahl3.DrawToBitmap(_memoryImage_3, new Rectangle(0, 0, programmwahl3.Width, programmwahl3.Height));
 
                    _memoryImage_4 = new Bitmap(programmwahl4.Width, programmwahl4.Height);
                    programmwahl4.DrawToBitmap(_memoryImage_4, new Rectangle(0, 0, programmwahl4.Width, programmwahl4.Height));
 
                    break;
                case 3:
                    _memoryImage_5 = new Bitmap(programmwahl5.Width, programmwahl5.Height);
                    programmwahl5.DrawToBitmap(_memoryImage_5, new Rectangle(0, 0, programmwahl5.Width, programmwahl5.Height));
 
                    _memoryImage_6 = new Bitmap(programmwahl6.Width, programmwahl6.Height);
                    programmwahl6.DrawToBitmap(_memoryImage_6, new Rectangle(0, 0, programmwahl6.Width, programmwahl6.Height));
 
                    _memoryImage_7 = new Bitmap(programmwahl7.Width, programmwahl7.Height);
                    programmwahl7.DrawToBitmap(_memoryImage_7, new Rectangle(0, 0, programmwahl7.Width, programmwahl7.Height));
  
                    _memoryImage_8 = new Bitmap(programmwahl8.Width, programmwahl8.Height);
                    programmwahl8.DrawToBitmap(_memoryImage_8, new Rectangle(0, 0, programmwahl8.Width, programmwahl8.Height));
                    break;
                case 4:
                    _memoryImage_9 = new Bitmap(programmwahl9.Width, programmwahl9.Height);
                    programmwahl9.DrawToBitmap(_memoryImage_9, new Rectangle(0, 0, programmwahl9.Width, programmwahl9.Height));
 
                    _memoryImage_10 = new Bitmap(programmwahl10.Width, programmwahl10.Height);
                    programmwahl10.DrawToBitmap(_memoryImage_10, new Rectangle(0, 0, programmwahl10.Width, programmwahl10.Height));
 
                    _memoryImage_11 = new Bitmap(programmwahl11.Width, programmwahl11.Height);
                    programmwahl11.DrawToBitmap(_memoryImage_11, new Rectangle(0, 0, programmwahl11.Width, programmwahl11.Height));
 
                    _memoryImage_12 = new Bitmap(programmwahl12.Width, programmwahl12.Height);
                    programmwahl12.DrawToBitmap(_memoryImage_12, new Rectangle(0, 0, programmwahl12.Width, programmwahl12.Height));
                    break;
                case 5:
                    _memoryImage_13 = new Bitmap(programmwahl13.Width, programmwahl13.Height);
                    programmwahl13.DrawToBitmap(_memoryImage_13, new Rectangle(0, 0, programmwahl13.Width, programmwahl13.Height));
 
                    _memoryImage_14 = new Bitmap(programmwahl14.Width, programmwahl14.Height);
                    programmwahl14.DrawToBitmap(_memoryImage_14, new Rectangle(0, 0, programmwahl14.Width, programmwahl14.Height));
 
                    _memoryImage_15 = new Bitmap(programmwahl15.Width, programmwahl15.Height);
                    programmwahl15.DrawToBitmap(_memoryImage_15, new Rectangle(0, 0, programmwahl15.Width, programmwahl15.Height));
 
                    _memoryImage_16 = new Bitmap(programmwahl16.Width, programmwahl16.Height);
                    programmwahl16.DrawToBitmap(_memoryImage_16, new Rectangle(0, 0, programmwahl16.Width, programmwahl16.Height));
                    break;
            }
        }
В чём состоит проблема? Заранее благодарю.
Миниатюры
Размытое изображение Bitmap при печати  
Вложения
Тип файла: pdf Отчёт.pdf (200.8 Кб, 12 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.12.2016, 13:55
Ответы с готовыми решениями:

Рисует размытое изображение
Добрый день. Я пробую написать маленькую 2D игру на WPF. У меня возникла одна трудность. Я создаю Image, который я использую в роли экрана...

Получается размытое изображение на кнопке
Добрый день! Изучаю WPF. Хочу сделать просто кнопку с текстом и картинкой. Использую следующий код: <Button...

Размытое изображение при просмотре видео/стримов
Купил новый монитор g-master gb2788hs, подключил через DVI, сбросил всё на заводские настройки. И столкнулся с данной проблемой во...

5
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
22.12.2016, 11:01
Terr_a,
Создайте минимальный проект, на котором можно увидеть проблему. Выложите проект целиком.
Я вот пробую создать изображение из скрытого контрола - все нормально отрисовывается.
А у вас проблема в том, что изображение не поддерживает прозрачность почему-то. Либо рисуется по многу раз поверх.
0
0 / 0 / 1
Регистрация: 11.08.2016
Сообщений: 10
22.12.2016, 11:10  [ТС]
Прилагаю к сообщению весь проект.
Вложения
Тип файла: zip Projekt.zip (218.6 Кб, 10 просмотров)
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.12.2016, 13:32
Лучший ответ Сообщение было отмечено Terr_a как решение

Решение

Цитата Сообщение от Terr_a Посмотреть сообщение
Доброго времени суток. Вывожу UserControl на печать. В результате чётко прорисовываются те элементы, которые видны на форме. Остальные размыты.
Это у вас из-за того что вы поставили в панелях (который лежат под вашими UserControl) BackColor в Transparent.
Нельзя ставить прозрачный цвет для контролов, они его не поддерживают.
А глюк происходит потому, что текст отрисовывается с антиалиасингом, и по краям букв есть полупрозрачные пикселы. Но если цвет контейнера Transparent, то фон не перерисоывается и при каждом рисовании полупрозрачные пикселы накладываются друг на друга и они получаются совсем не прозрачными.
1
0 / 0 / 1
Регистрация: 11.08.2016
Сообщений: 10
23.12.2016, 13:57  [ТС]
Благодарю. Работает замечательно.
Немного не по теме. Где можно найти информацию по таким вопросам (что нельзя устанавливать BackColor в Transparent для UserControl)? Или какие разделы информатики (если вообще информатики) освещают подобного рода проблемы?
0
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
23.12.2016, 14:01
Цитата Сообщение от Terr_a Посмотреть сообщение
Немного не по теме. Где можно найти информацию по таким вопросам (что нельзя устанавливать BackColor в Transparent для UserControl)? Или какие разделы информатики (если вообще информатики) освещают подобного рода проблемы?
К информатике это отношения не имеет. Это особенности реализации графики конкретно в windows и конкретно в GDI+.
Если брать например DirectX или OpenGL там совсем все по другому.
Касаемо литературы- это описывается в литературе по WinAPI, но туда лезть вам не нужно. Просто нужно немного разобраться как идет отрисовка контролов в windows.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.12.2016, 14:01
Помогаю со студенческими работами здесь

Размытое изображение!
Попробую подробно описать проблему: сегодня купил процессор i5 и материнку под него, видюха gtx 660, Win 10, как была так и осталась, все...

Размытое изображение на мониторе ЖК
Добрый день, подскажите люди добрые, кто знает в чем дело? Стоял у меня на компе моник ЖК, все было норм, но потом почему-то изображение...

Размытое изображение на экране
Итак, как-то была видеокарта GTX 460, все было нормально. Теперь R9 270X. Монитор - ASUS VW193D-B. Только VGA выход. Подключен монитор к...

Размытое изображение на мониторе
Раньше у меня стояла Vista и было разрешение 1360*768 .Картинка была четкой,всё было нормально.Поставил семёрку,она выставила максимальное...

Размытое Раздвоенное Изображение
Здравствуйте, купил новую видеокарту Asus Strix 1050 ti, но так как монитор (LG FLATRON E2350) у меня только на аналоге, купил переходник...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru