|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
||||||
Виртуальный контекст16.05.2012, 18:21. Показов 3780. Ответов 15
Метки нет (Все метки)
Господа я так понимаю это должно быть виртуальное окно?Вопрос как сделать виртульное окно и то , что мы туда нарисум перенести на наше окно. хочу понять как вывести фон+картинку без моргание,но вот , что такое виртуальный контекст и как с ним работать,что то не пойму + как из виртуального контекста переместить изображение не как не пойму.Вот допустим такой ког -
0
|
||||||
| 16.05.2012, 18:21 | |
|
Ответы с готовыми решениями:
15
Контекст принтера Выбор шрифтов в контекст Как получить контекст чужого процесса ? |
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
||||||
| 02.06.2012, 23:17 [ТС] | ||||||
|
господа вот пытаюсь сделать при помощи двойной буферизации но не получается есть моргание-
я вот , что не понимаю - как я могу скопировать изображение в hdc памяти , затем как из памяти отресовать на окно ?Помоги те кто знает , а то всё моргает !!!
0
|
||||||
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
|
| 07.06.2012, 21:29 [ТС] | |
|
пардон не понял !!!
0
|
|
|
|
||
| 07.06.2012, 21:59 | ||
|
Зачем ты рисуешь битмап каждый тик таймера. Нарисуй его и перерисоввывай лишь по WM_SIZE а здесь
1
|
||
|
589 / 96 / 6
Регистрация: 24.01.2009
Сообщений: 379
|
|
| 08.06.2012, 20:01 | |
|
Чтобы не было моргания при использовании InvalidateRect (), нужно чтобы третий параметр был равен false. Кроме этого второй параметр должен содержать прямоугольник, который передается в структуру PAINTSTRUCT при вызове BeginPaint (). Вот тогда и нужно делать с этим прямоугольником всё что нужно.
Лучше всего не рисовать при возникновении WM_PAINT, а просто копировать с контекста в памяти. Вот мой старый пример. Построение обработчика таким образом еще полезно потому, что при приеме сообщения WM_PAINT посланного не вами, а системой, так же будет просто копирование с использованием прямоугольника, приходящего в PAINTSTRUCT.
0
|
|
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
|
| 08.06.2012, 22:44 [ТС] | |
|
Dimazzzzzz, это я уже понял , как наложить картинку на контекст и потом от туда её перекинуть на окно ?
0
|
|
|
589 / 96 / 6
Регистрация: 24.01.2009
Сообщений: 379
|
|
| 08.06.2012, 22:54 | |
|
Игорь с++, ну так в примере всё есть со всеми комментами. Там ничего лишнего, только основное для создания этого механизма. Единственное там я использовал второй поток для рисования, а не таймер, хотя принципиальной разницы тут нет.
1
|
|
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
||||||||||||||||||||||||||
| 14.06.2012, 18:50 [ТС] | ||||||||||||||||||||||||||
|
Господа со всем разобрался , но есть один вопрос который я так и не сумел решить
![]() Суть проблеммы - 1) вот так я определил клиентскую область
![]() ![]() ![]() ![]() 5)и копирование на наше окно я так пологаю будет выглядить следующем образом -
Заранее буду очень благодарен за ответ , всю голову себе уже сломал , но понять НЕ МОГУ !!! Добавлено через 24 минуты Вот я пытаюсь нарисовать два изображения на виртуальный битмап , но не чго не выходит , показывает то , что рисуем последнее -
0
|
||||||||||||||||||||||||||
| 14.06.2012, 21:06 | |
|
0
|
|
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
|
| 14.06.2012, 22:13 [ТС] | |
|
0
|
|
| 14.06.2012, 22:16 | |
|
0
|
|
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
||
| 14.06.2012, 22:36 [ТС] | ||
!!! Загружаешь один битмап , затем другой , в паинти рисуеш первый битмап , и другой .
0
|
||
|
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
|
|||||||||||||||||
| 15.06.2012, 02:23 | |||||||||||||||||
|
В общем, думаю Вам будет полезен мой код) Последний конструктор накладывает 2 картинку на 1, как я понял, это то что Вам надо). Image.h
1
|
|||||||||||||||||
|
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
|
|
| 15.06.2012, 09:06 [ТС] | |
|
Спасибо более конкретно посматрю код вечером , и ещё не могли бы принцип подсказать ? Да и ещё мне их полностью склеивать не надо , т.к. это просто передвижение обьекта на экране , а вирт. контекст ,что бы не было морганий .
0
|
|
|
21 / 21 / 7
Регистрация: 16.09.2009
Сообщений: 111
|
|||||||||||
| 15.06.2012, 21:34 | |||||||||||
|
Пусть hBgrMemDC и hBgrBmp - виртуальный контекст и bitmap фоновой картинки,
hTopMemDC и hTopBmp - виртуальный контекст и bitmap картинки которая накладывается сверху и перемещается по фону hResMemDC и hResBmp - виртуальный контекст и bitmap результирующей картинки(фон+2 картинка). hdc - НЕвиртуальный контекст окна, куда выводим результат(тот самый, зачастую получают который в WM_PAINT через BeginPaint). 1) Если размеры фона меньше размеров окна, в которое выводим результат, то возможно нужно hResMemDC залить белым цветом, т.е. в последний параметр передать WHITENESS(вместо SRCCOPY). Скорее всего это не понадобиться, но я не уверен. 2) Полностью копируем hBgrMemDC в hResMemDC, 3) Копируем hTopMemDC в hResMemDC, по заданным координатам 4) Копируем hResMemDC в hdc.
Добавлено через 6 часов 8 минут Ещё немного поразмышлял над этим вопросом. Во первых HBITMAPы там передавать необязательно(они там не используются). Во-вторых, можно хранить hResMemDC и хранить старые координаты top рисунка, при этом не надо каждый раз при прорисовке создавать-удалять новый виртуальный контекст, что поидее должно существенно увеличить производительность. И когда нужно выполнить прорисовку, не обязательно заново копировать весь фоновый рисунок в новый виртуальный контекст, достаточно тем же фоновым рисунком затереть ту часть, которая была зарисована top рисунком при предыдущем вызове функции, потом нанести top рисунок на новую позицию, сохранить новый hResMemDC, и новые координаты для последующего вызова функции. Короче код прибилзительно будет следующим:
1
|
|||||||||||
| 15.06.2012, 21:34 | |
|
Помогаю со студенческими работами здесь
16
Как обрезать картинку выбраную в контекст устройства?
Виртуальный режим в ListView Виртуальный режим в ListView Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|