Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 02.11.2008, 22:22   #1
zwook
 
Регистрация: 28.10.2008
Сообщений: 5
Репутация: 10
По умолчанию "Прозрачная" Программа

Возможно ли в дельфи сделать программу которая рисует что либо (в моем случае параболу) поверх всех окон, при этом фон должен быть прозрачный. Саму программу я написать могу но вот как сделать так, чтобы фон был прозрачный и поверх всех действующих окон незнаю

Для тех кто не понял вопроса, программа должна рисовать линию которая изображатеся поверх действующего окна. При этом все то, что за периметром этой линией должно быть прозрачным т.е. просвечивать действующее окно.
zwook вне форума   Ответить с цитированием
Старый 02.11.2008, 23:08   #2
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,691
Репутация: 2251

icq: 421277094
По умолчанию

Рисует простую прямую. Параболу можно построить по нескольким малым отрезкам.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  desk: tcanvas;
begin
  desk := tcanvas.create;
  desk.handle := getdc(hwnd_desktop);
  desk.MoveTo(100, 100);
  desk.LineTo(300,300);
  releasedc(desk.handle, hwnd_desktop);
  desk.free
end;
desk - обычная канва, можно изменить цвет, толщину линии и т.д.
eoln вне форума   Ответить с цитированием
Старый 02.11.2008, 23:30   #3
BOBAH13
Android Developer
ПрофессионалФорумчанин
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Адрес: Los Angeles, USA
Сообщений: 3,708
Репутация: 1457
По умолчанию

Код:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE); // поместим на верх
// допустим BMP: TBITMAP с PixelFormat = pf32bit и вы он заполнен нулям
// теперь нарисуите на нем параболу и к ее цвета в альфа канале 255 - полная не прозрачность
// теперь
UpdateLayeredWindow(Handle, 0, @ZTopLeft, @ZSize, BMP.Canvas.Handle, @ZPoint, 0, @ZBF, ULW_ALPHA);
ну переменные сами разберете.. а при создании окна у которого Handle указан.. пишите SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

P.s. писал все коды и слова прямо тут так что если что подкорректируите сами.
__________________
Home | Android for food | XWindows Dock | github
BOBAH13 вне форума   Ответить с цитированием
Старый 03.11.2008, 11:14   #4
zwook
 
Регистрация: 28.10.2008
Сообщений: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Код:
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE); // поместим на верх
// допустим BMP: TBITMAP с PixelFormat = pf32bit и вы он заполнен нулям
// теперь нарисуите на нем параболу и к ее цвета в альфа канале 255 - полная не прозрачность
// теперь
UpdateLayeredWindow(Handle, 0, @ZTopLeft, @ZSize, BMP.Canvas.Handle, @ZPoint, 0, @ZBF, ULW_ALPHA);
ну переменные сами разберете.. а при создании окна у которого Handle указан.. пишите SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);

P.s. писал все коды и слова прямо тут так что если что подкорректируите сами.
Огромное спасибо! =)
zwook вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder AleksP C++ Builder 7 11.04.2009 13:06
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 11:03
программа,определенние "1" в таблице!помогите пожалуйста.. katy)))) Помощь студентам 2 06.12.2007 13:09
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49


19:57.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru