![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Подтвердите свой е-майл
Регистрация: 02.04.2009
Сообщений: 48
|
![]()
Конечная цель просто рисовать, неее скиншот не пойдет, надо будет одновременно кнопки нажимать
|
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
пока мне видится так... если кто знает как лучше, отпишет:
рисовать по некоторым объектам (с canvas- image, form...) вы сможете, а по наследникам типа TCustomEdit, а это edit, кнопки, memo и другие с защищенным свойством canvas вам придется для каждого из них переопределять WMPaint, по сути создавать наследников, чтоб получить доступ к TControlCanvas... далее, получив доступ к канвасу, объединяем их под общими событиями (как ранее указал) mousemove,mouseleftdown/up (+ нужно учитывать фактическое положение и положение над соответствующим компонентом) вы готовы к этому?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#13 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
Какой ужас ребята
![]() Делается это так... разумеется если вам ненужно "живое" окно. 1. Есть окно, на нем контролы 2. Покаким то признакам, состояниям вы определяете что щас начинается рисование 3. Создаете новое окно, дочернее в клиентской области, либо цепляите прямо поверх вашего. 4. Ну два варианта, либо как окно слой - тогда даже можно сделать и "живое" окно, либо просто копировать область окна через GetDC + BitBlt, и уже рисовать на скопированном "фоне". И так, если выбрали первый вариант (слой), то все не так уже и тяжело: 1. Создать окно по размерам одинаковое с вашим (главным окном). 2. Создать буфер (CreateCompatibleDC + CreateDIBSection) где вы получити нужный вам HDC и указатель на биты в 32х битовом формате на пиксель. Теперь когда рисуите: 1. Прийдется ставить глобальный хук, хотя можно и локальный (ведь в своем приложении/окне рисуите), на мышь т.е. интерисуют WM_LBUTTONDWON + WM_LBUTTONUP + WM_MOUSEMOVE. 2. На этих трех сообщения (в их обработчиках) у вас есть уже созданное окно-слой и HDC и scan0 (биты). Теперь рисуите любым способом (GDI, GDI+, OpenGl, DirectX...) и потом делаите UpdateLayeredWindow (вроде так). 3. Когда главное окно двигается (есть соответствующие сообщения) вы двигайте и свое окно-слой. 4. Т.к. окно-слой, то сквозь прозрачные места можно будет нажимать/работать с главным окном ![]() p.s. извените за корректность, быстро писал ![]() Последний раз редактировалось BOBAH13; 16.11.2009 в 19:11. |
![]() |
![]() |
![]() |
#14 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]() Цитата:
![]() ...без обид, что тот вариант, что тот, но вам придется Pavelok разобраться, а мы поможем
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 16.11.2009 в 20:15. |
|
![]() |
![]() |
![]() |
#15 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
raxp: забудьте про "легкий" транспарент - при рисовании про качество, сразу можно забыть, все будет очень криво.
|
![]() |
![]() |
![]() |
#16 | |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]() Цитата:
![]() 1- имеем окно с кучей компонентов 2- по нажатию правой кнопки мыши поверх идет второе полупрозрачное окно 3- на котором можно рисовать левой кнопкой мыши 4- по нажатию опять правой кнопки мыши делаем его прозрачным, в результате текст остается поверх всего (т.к. это форма), причем нижнюю основную форму можно тягать, нажимать и т.д (идет привязка) и повторять эффект... для стирания двойной клик при рисовании во вложении проект, держите и дерзайте...
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation Последний раз редактировалось raxp; 16.11.2009 в 22:29. |
|
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
однако up#16
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#18 |
Подтвердите свой е-майл
Регистрация: 02.04.2009
Сообщений: 48
|
![]()
raxp спасибо! Но как сделать так чтоб форма 2 не была такой прозрачной?
|
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
![]()
а как вы рисовать будете? так вы видите на чем рисуете...
свойство alfablend увеличьте у формы-2
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
![]() |
![]() |
![]() |
#20 |
Участник клуба
Регистрация: 12.08.2008
Сообщений: 1,977
|
![]()
Жаль, хотел добавить + (respect и т.п.) через "весы". Почему то (?) двиг форума не дал возможности.
Так что на словах: raxp - плюс тебе (Вам). За усердие в продвижении темы. Ну не считайте это OFFTOP - ом.
И не сомневайся даже ... отдых - кайф, работа - лажа!
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как заставить форму всегда быть поверх всех окон | AnnNet | Общие вопросы Delphi | 9 | 11.12.2013 16:16 |
Как сделать поверх всех | KinderX | Microsoft Office Excel | 7 | 29.06.2009 20:32 |
MDICihild форма поверх всех компонентов в родительской MDI ? | chandrasecar | Общие вопросы Delphi | 5 | 07.06.2009 17:48 |
Рисовать поверх TImage | odi_noki | Мультимедиа в Delphi | 10 | 09.04.2009 23:10 |
Как отобразить меню поверх всех фреймов? | drRobert | JavaScript, Ajax | 3 | 31.08.2008 21:37 |