|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
18.01.2013, 08:49 | #11 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
fyedor, ну что же это такое
Вот у Вас фон на форме. Это значит, что форма имеет контекст, у контекста есть битмэп, на битмэпе нарисован карта. Идея заключается в следующем. Создать контекст в памяти и нарисовать на нем. Pie hMemDC, ... А потом сделать наложение: AlphaBlend hdc,... ..., hMemDC А у Вас получается, что контекст создали, а рисуете почему-то не на нем. |
18.01.2013, 10:25 | #12 | |
Пользователь
Регистрация: 11.12.2012
Сообщений: 71
|
Цитата:
Код:
|
|
18.01.2013, 10:39 | #13 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Вот прямо сейчас проверил минимум, все работает:
Код:
PS. Долго втыкал, что делает у Вас RtlMoveMemory |
18.01.2013, 11:11 | #14 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 71
|
Да, проверил, теперь хоть как-то работает
Только жаль, что данная фигура не стабильная... Что-то меняешь в окне (например, прокручиваешь окно вниз) - она начинает исчезать, можно сделать так, чтобы фигура была стабильной. Я так понимаю, нужно реагировать на изменение окна и производить обновление? |
18.01.2013, 11:14 | #15 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 71
|
|
18.01.2013, 11:48 | #16 | ||
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
В частности WM_PAINT. Событие происходит, когда винда определяет, что окно нуждается в прорисовке. Это бывает при появлении окна, при скролинге, при перекрытии других окон, итд. Я не знаю, генерируют ли формы Access'а событие типа Paint, но если все же нет, то это решается сабклассингом окна. То есть подменой текущей оконной процедуры на свою при помощи / SetWindowLong GWL_WNDPROC /. И в этой подменной процедуре ловить WM_PAINT и рисовать. Тогда при любом изменении (скроллинге итп) автоматически будет прорисовываться нужный вид. Цитата:
Примерно такого содержания: Код:
Создать батник : Код:
Батник вызывает инструмент midl, а он создает типовую библиотеку, которую подключаем в рефренсах. |
||
18.01.2013, 12:50 | #17 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 71
|
EUGY, спасибо Вам огромное за объяснение!
Построение идет. Жаль только еще сам битмэп виден... Можно как-нибудь битмэп сделать полностью прозрачным, а фигуре присвоить свою прозрачность? |
18.01.2013, 13:27 | #18 | |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Цитата:
Навскидку: регион отсечения , маска , альфа-канал. У Вас графический примитив типа сектора, поэтому рекомендую первый, как самый простой. Принцип такой: перед выводом AlphaBlend создать путь Код:
И так же AlphaBlend создаст наложение только в области этого региона, который совпадает очертаниями с рисунком в hmemDC. После рисования в этом регионе нужно восстановить дефолтный регион в контексте , иначе потом даже серый фон формы не будет способен отобразиться. Советую вообще сохранять контекст /SaveDC/ и при окончании рисования восстанавливать /RestoreDC/. При работе с GDI открывайте диспетчер задач, сделайте видимым столбец "объекты GDI" и наблюдайте, если их количество постоянно увеличивается, значит в коде ошибки. Не освобождаются контексты, не удаляются битмэпы, пути, регионы и т.п. |
|
18.01.2013, 13:43 | #19 |
Пользователь
Регистрация: 11.12.2012
Сообщений: 71
|
А BeginPath - это вообще откуда? У меня в редакторе не видит его...
|
18.01.2013, 13:48 | #20 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Обычная функция из Gdi32.lib
Код:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
WinApi рисование в VBA | Desha | Помощь студентам | 5 | 05.12.2012 12:32 |
Прозрачность в ie | WennY | HTML и CSS | 1 | 26.08.2012 17:13 |
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) | Артём1991 | Помощь студентам | 0 | 25.03.2012 17:13 |
Прозрачность | digital-stream | Общие вопросы Delphi | 1 | 14.11.2011 21:03 |
Ошибка с SetLength применительно в PChar | Celestia | Общие вопросы Delphi | 7 | 09.04.2011 06:42 |