NoX World - форум об игре NoX

 
Пожалуйста, войдите или зарегистрируйтесь.

Войти
Расширенный поиск  
Сейчас онлайн стрима нет!
Сейчас на сервере никого нет!

Обязательно все ознакомьтесь с новыми Правилами Портала!

Актуальные новости:
IP сервера изменён! Новый IP: 45.144.64.229. Сервер также доступен через Westwood Online (XWIS, игру через сервер)


Важные темы:
Как играть по сети? Понятное руководство!
Правила Сервера NoxWorld.
Как помочь форуму финансово?

Автор Тема: Программирование. Вывод изображения поверх всего на экране.  (Прочитано 7665 раз)

0 Пользователей и 1 Гость смотрят эту тему.

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Рою интернет и не могу найти ответ на этот вопрос. Хотя в интернете этот вопрос задавали не однократно, но решения нету.
Проблема не в самом рисование поверх всего, что на экране, а в том, что это все затирается при изменениях.
Может быть кто-то подскажет как это реализовать или даст ссылку?
Работаю в Делфи. Но буду рад примеру кода на любом языке программирования.
Записан
Отец читеров

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Ммм... сделать окно на весь экран. Сделать его прозрачным, кроме тех мест, где будешь рисовать. Сделать, чтобы было поверх всех окон и чтобы не брало фокус )))
Записан

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Затиралось и будет затираться.
Поскольку прозрачное окно тебе не подойдет - будет прозрачно везде - используй РЕГИОНЫ чтобы вырезать окно по форме того, что хочешь нарисовать.


Записан

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Т.е. Рисование делать надо на форме, а саму форму сделать поверх всего?
Записан
Отец читеров

pss88

  • Постоялец
  • **
  • Карма: 0
  • Оффлайн Оффлайн
  • Сообщений: 81
    • Просмотр профиля
    • Awards

Ну да - первое, что пришло в голову))) А ты рисовал на экране? (Device Context = 0)
Записан

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Ну да - первое, что пришло в голову))) А ты рисовал на экране? (Device Context = 0)
Конечно рисовал, если в таймер вставить рисование то получается нормально, но мне надо чтоб в игре также выводилось стабильно, без мерцания.
Записан
Отец читеров

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

грм, без мерцания говоришь.... сложновато - я бы просто внедрялся. Например можно эвент сделать.
т.е. твоя прога ждет эвент когда начинать рисовать, а та прога, чье окно ты ловишь - посылает эвент когда свое нарисует.
для этого надо
DuplicateHandle + VirtualAllocEx + WriteProcessMemory

и код какой-нить засунуть вроде
BOOL WINAPI (*SetEventPtr)(
  __in  HANDLE hEvent
);
VOID WINAPI (*SleepPtr)(
  __in  DWORD dwMilliseconds
);

HANDLE Event;
void SomeCallBack() {
SetEventPtr(Event);
SleepPtr(0);
}
  для этого понадобится порядка 30 байт забросить.
Записан

Lаrboss

  • Старожил
  • *****
  • Карма: 109
  • Оффлайн Оффлайн
  • Сообщений: 910
  • Абстрагирую
  • Awards Знак 'Властелин Сил Природы' За редактор шрифтов - 2013 Медаль 'За программу Nox Server Notificator' За программу Nox Binder Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Если говорить конкретно, то я хочу в ноксе вывести текст (для начала) в самой игре. Проблем с выводом не посредственно нет - могу вывести даже растровый рисунок в игре. Однако возникает эффекта мерцания, из-за того, что после вывода моей графики, она затирается графикой нокса, т.к. экран постоянно обновляется. То, что у меня получилось можно посмотреть в ноксменеджере  - вывод хп и мп в игре.


Ведь есть же программы, которые умею рисовать внутри полноэкранного приложения, steam, к примеру выводит мессенджер внутри игры и все шикарно.


Твой способ попробую. Спасибо.
Записан
Отец читеров

TheSim

  • Клан "NoX Craft"
  • Постоялец
  • *
  • Карма: 31
  • Оффлайн Оффлайн
  • Сообщений: 287
  • Awards Активным участникам сходок - 2013 За релиз ЮниМода Знак 'За тягу к тайнам Nox'
    • Просмотр профиля
    • Awards

Стим выводит т.к. интегрируется в игру со стимом как правило.

Я не уверен что стим умеет выводить графику в ПРОИЗВОЛЬНУЮ игру - т.е. если ты запустишь стим и нокс и тебе напишут какую нить хрень в стиме мерцать не будет?

Если надо - могу более детально подготовить код для заброски и подсказать куда его забрасывать
Записан
Расширенный поиск  
 

Страница сгенерирована за 0.167 секунд. Запросов: 22.