Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23

Очистка формы функцией библиотеки GDI+

22.12.2020, 20:54. Показов 2346. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Экспериментирую с кодом:
Visual Basic
1
2
3
                Form1.Cls
               GdipDrawImageRect graphics, img, 0, 0, nWidth, nHeight
                   Form1.Refresh
После очистки формы копирование прекращается.
Есть ли функция GDI+ для очистки объекта graphics?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.12.2020, 20:54
Ответы с готовыми решениями:

Очистка консоли GDI
Всем привет! Подскажите функцию в библиотеке GDI чтобы очищать консоль. Например в консоле рисуется геометрическая фигура, затем ее...

GDI отрисовка и очистка
Доброго времени суток! Суть такова: Вывожу посредством GDI прямые на консольное окно. После завершения отрисовки мне нужно стереть...

Очистка формы или обновление формы обновления (формы обратной связи ajax)
Подскажите тупому программисту, я как только не пытался и писал val () и в итоге не фурычит.... пометил красным код:<script...

15
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
22.12.2020, 22:08
Лучший ответ Сообщение было отмечено Argus19 как решение

Решение

Ничего не понятно. Что за graphics? Залить graphics можно через GdipGraphicsClear
1
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
22.12.2020, 23:04  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Залить graphics можно через GdipGraphicsClear
Вы как всегда точны. Спасибо!
Пробовал функцию GDI FloodFill. Не помогло. По всей видимости, из-за занятости Form1.hDC.
Один иностранец спросил, как сделать вот так:
https://www.xspdf.com/images/38798-2.jpg
Я с вашей помощью сделал так:
Вложения
Тип файла: zip Mouce Scroll.zip (563.3 Кб, 23 просмотров)
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.12.2020, 09:54
Цитата Сообщение от Argus19 Посмотреть сообщение
Я с вашей помощью сделал так:
Не соблюдаются пропорции при изменении размера?
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
23.12.2020, 10:59  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Не соблюдаются пропорции при изменении размера?
Долго искал информацию.
Изменяю размер не умножением или делением, а сложением и вычитанием, причём, ширину и высоту на разное число. Не сделал масштабирование относительно центра. Есть сомнение в работе функций при применении вещественных чисел в качестве операндов.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
23.12.2020, 11:19
Argus19, просто задавай мировые-трансформации и ничего считать не нужно.
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
23.12.2020, 11:33  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
задавай мировые-трансформации и ничего считать не нужно.
Тут я пока слабоват.
Сделал простой арифметикой без проверки максимального и минимального размеров:
Вложения
Тип файла: zip Mouce Scroll1.zip (563.7 Кб, 14 просмотров)
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
23.12.2020, 12:07
Цитата Сообщение от Argus19 Посмотреть сообщение
Сделал простой арифметикой
Ну это опять частный случай.
При других соотношениях сторон работать не будет.
Можно же легко вычислять коэф-т прямо в коде!
Определить переменную для коэффициента
Public nWidth As Long, nHeight As Long, Kf As Single
Там где у вас определяются размеры изображения
Visual Basic
1
2
3
4
5
6
7
     nWidth = lngWidth
            nHeight = lngHeight
     If nWidth > nHeight Then
       Kf = nWidth / nHeight
     Else
       Kf = nHeight / nWidth
     End If
Процедура станет такая
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Public Sub Redraw()
    If Wheel = -1 Then
       nWidth = nWidth / Kf
            nHeight = nHeight / Kf
                Call RCopy
    End If
    If Wheel = 1 Then
       nWidth = nWidth * Kf
            nHeight = nHeight * Kf
                Call RCopy
    End If
End Sub
1
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
23.12.2020, 12:10  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
При других соотношениях сторон работать не будет.
Согласен. Ваш вариант лучше. Сейчас попробую ещё вариантец.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
23.12.2020, 12:27
Argus19, достаточно одной функции GdipScaleWorldTransform в которой указать масштаб - размеры сами посчитаются.
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
23.12.2020, 13:13  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
достаточно одной функции GdipScaleWorldTransform
Сейчас почитаю про эту функцию. Пока так:
Вложения
Тип файла: zip Mouce Scroll2.zip (1.06 Мб, 17 просмотров)
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
23.12.2020, 14:35  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
GdipScaleWorldTransform
После того, как я стал загружать два изображения, данная функция масштабирует оба, что уже неудобно.
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
23.12.2020, 14:40
Цитата Сообщение от Argus19 Посмотреть сообщение
После того, как я стал загружать два изображения, данная функция масштабирует оба, что уже неудобно.
Ну так сбрасывай масштаб или изменяй или что ты там хочешь?
0
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
23.12.2020, 14:48  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Ну так сбрасывай масштаб
В объект graphics, созданный из Form1.hDC, загружается изображение .jpeg и затем изображение .png. Масштабировать надо только .png.
Функция GdipScaleWorldTransform модифицирует весь объект graphics.
Получается, что надо восстановить прежний масштаб для изображения .jpeg, а затем установить новый для .png?
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
23.12.2020, 14:57
Цитата Сообщение от Argus19 Посмотреть сообщение
В объект graphics, созданный из Form1.hDC, загружается изображение .jpeg и затем изображение .png.
Так неверно говорить. Туда ничего не загружается, а отрисовывается. Graphics - это аналог контекста устройства GDI.

Цитата Сообщение от Argus19 Посмотреть сообщение
Получается, что надо восстановить прежний масштаб для изображения .jpeg, а затем установить новый для .png?
Это зависит от ситуации. Логичнее сначала отрисовать без масштабирования, а затем отмасштабировать. Сбросить все трансформации можно через GdipResetWorldTransform. Вот тут есть описание большинства функций - изучай. Про трансформации написано в MSDN.
1
 Аватар для Argus19
1433 / 450 / 78
Регистрация: 24.09.2017
Сообщений: 2,533
Записей в блоге: 23
24.12.2020, 00:07  [ТС]
Сделал с помощью функции GdipScaleWorldTransform. Для простоты управление масштабированием клавишами "+" и "-". Без арифметики опять не обойтись. Или каждый раз пересчитывать начальные координаты для функции GdipDrawImageRect, или использовать какую-то другую функцию копирования.
Вложения
Тип файла: zip Mouce Click.zip (125.7 Кб, 18 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2020, 00:07
Помогаю со студенческими работами здесь

Ошибки при подключении библиотеки GDI plus
У меня стоит visual studio 2013. Когда подключаю библиотеку <gdiplus.h> появляются 200 ошибок. В интернете читал, что следует скачать dll и...

GDI+ и заливка с помощью методов библиотеки GDI32.dll
Делаю аналог Paint, возникла проблема: необходимо залить область цветом или штрихованной кистью. Заливаю при помощи методов из gdi32.dll, ...

Очистка графика + очистка формы
Есть две программы: Прямо на форме (через Canvas) рисую правильный многоугольник, но после нужно очистить форму чтоб не...

Не могу подключить библиотеки GDI+ при создании приложения Windows Forms в VC++
Не могу подключить библиотеки GDI+ при создании приложения Windows Forms в VC++. Пробовал #include <Gdiplus.h> выдает около ста...

Есть ли в WPF полноценная замена GDI+? Чтобы можно было всё, что можно в GDI+? Просто думаю углубляться в работу с изображениями в WPF или GDI.
Ну собственно весь вопрос в заголовке темы.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru