Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Admin 
Форум » Все о Delphi » Графика и игры » Графический редактор. Что-то типо того. (Если можете хелп)))
Графический редактор. Что-то типо того.
DublДата: Воскресенье, 19.12.2010, 03:40 | Сообщение # 1
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
Привет. Короче такая тема. Хочу попробовать написать что-то в графческой сфере. Есть некая задумка. И соответственно есть вопросы.

Есть некая идея, т е в идеале нужно просто загрузить фон(картинку) в поле, с этим ясно. Затем, нужно перенести на на фон элементы(текст, картинки) и пр. Ну я думаю в делфе можно как-то переносить компоненты по форме, найду что-нибудь. А вот как все эти наложения скрепить в 1 целое изображения пока не ясно. Я придумал кое-что, но не знаю, как реализовать. Я вот что придума: можно делать скриншот прогой именно того поля в котором расположен фон, т е по координатам, ширине, высоте поля, и соответственно получился единое целое фона и наложенными компонентами.

Как так сделать?)) Помогите если есть времени немножечко)

 
skycarДата: Воскресенье, 19.12.2010, 04:34 | Сообщение # 2
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Ты смотрел примеры работы с канвой (TCanvas)? Если нет, то погляди. Можно и через скриншот делать, как ты и описал.

Code

procedure CaptureWindow(Wnd: HWND; const FileName: string);
var WndDC: hDC;
  B: TBitmap;
  R: TRect;
begin
  B:=TBitmap.Create;
   WndDC:=GetWindowDC(Wnd); // в переменную диспл. контекст
   GetWindowRect(Wnd, R); // прямоугольник окна
   B.Width:=R.Right - R.Left; // подгон размеров битмапа
   B.Height:=R.Bottom - R.Top; // ... под размеры окна
   BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, WndDC, 0, 0, SRCCOPY); // копируем пиксели
   B.SaveToFile(FileName); // сохраняем
   B.Free; // освобождаем объект
end;

вот набросал процедуру, сохраняет скрин окна (ищется по дескриптору, а если у тя TImage на панели, то надо указывать первый параметр Panel1.Handle). Соответсвенно скопирует всё, что в окне нарисовано, надписи и прочее.

 
AdminДата: Воскресенье, 19.12.2010, 11:49 | Сообщение # 3
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
На мой взгляд со скриншотом это просто ерунда. А если это окно будет под другим (то, допустим поверх всех окон)?

Посмотрите что такое канва, как с ней работать и вам станет яснее в какую сторону искать ответ.


Не оказываю помощь через личные сообщения и ICQ
 
skycarДата: Вторник, 21.12.2010, 20:59 | Сообщение # 4
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Тогда этот пример подходит для сохранения изображения, если указывать именно дескриптор панели. Вряд ли будет скрыто это окно, если вызывать сохранение, работая в нём же.
 
Форум » Все о Delphi » Графика и игры » Графический редактор. Что-то типо того. (Если можете хелп)))
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz