Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2010, 22:18   #1
Pedro
Форумчанин
 
Аватар для Pedro
 
Регистрация: 25.03.2007
Сообщений: 166
По умолчанию gdi+ снимок экрана

Подскажите пожалуйста, как сделать скриншот экрана средствами gdi+.
Pedro вне форума Ответить с цитированием
Старый 09.01.2010, 23:19   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

должно подойти.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 10.01.2010, 18:13   #3
Pedro
Форумчанин
 
Аватар для Pedro
 
Регистрация: 25.03.2007
Сообщений: 166
По умолчанию

raxp, спасибо большое. Все работает, но почему-то когда я делаю скриншот экрана в другом потоке, ничего не работает, подскажите в чем дело?
Pedro вне форума Ответить с цитированием
Старый 10.01.2010, 19:21   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Pedro Посмотреть сообщение
raxp, спасибо большое. Все работает, но почему-то когда я делаю скриншот экрана в другом потоке, ничего не работает, подскажите в чем дело?
Прежде чем использовать GDI+ требуется его инициализация
BOBAH13 вне форума Ответить с цитированием
Старый 10.01.2010, 20:00   #5
Pedro
Форумчанин
 
Аватар для Pedro
 
Регистрация: 25.03.2007
Сообщений: 166
По умолчанию

Наверное я немного отклоняюсь от темы, но все же... Вот я создаю новый поток с помощью Tthread.
вот код:
Код:
type
  potok=class(TThread)
    public
      c:TCanvas;
      bitmap: TBitmap;
      jpeg:TJPEGImage;
      rect:TRect;
      procedure execute;override;
      procedure doit;
    published
      constructor Create(CreateSuspennded: Boolean);
  end;
Конструктор:
Код:
 constructor potok.Create;
  begin
    rect:=Screen.DesktopRect;
    c:=TCanvas.Create;
    c.Handle:=getdc(0);
    bitmap:=TBitmap.Create;
    inherited Create(CreateSuspennded);
 end;
Ну и собственно фотографирование стола
Код:
procedure potok.Execute;
begin
while not Terminated do
begin
bitmap.Canvas.CopyRect(rect,c,rect);
bitmap.SaveToFile('D:\1.bmp');
end;
end;
потом в ФормКриэйт
Код:
  
pot:=potok.Create(false);
pot.Priority:=tpNormal;
В основном потоке программы все отлично работает, почему же не работает в дополнительном?
И вот еще мне не понятно, если заменить
Код:
bitmap.Canvas.CopyRect(rect,c,rect);
bitmap.SaveToFile('D:\1.bmp');
на
Код:
form5.canvas.copyrect(rect,c,rect);
То изображение рабочего стола появляется на форме, но примерно через 10 секунд прекращает обновляться. Пожалуйста помогите, объясните в чем дело. Заранее примного благодарен.
Pedro вне форума Ответить с цитированием
Старый 10.01.2010, 22:35   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1.
Код:
bitmap:=TBitmap.Create;
2.
Код:
bitmap.Canvas.CopyRect(rect,c,rect);
3. А перед вызовом п. 2 Bitmap сам принимает размеры равные rect ?
BOBAH13 вне форума Ответить с цитированием
Старый 10.01.2010, 22:51   #7
Pedro
Форумчанин
 
Аватар для Pedro
 
Регистрация: 25.03.2007
Сообщений: 166
По умолчанию

Аааааа, точно ёмаё. BOBAH, большое спасибо!
Pedro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать снимок экрана? Briz Общие вопросы Delphi 28 10.04.2013 16:29
Мониторинг каталога. Снимок папки. zhefran Общие вопросы Delphi 10 30.09.2008 17:02
GDI EdNovice Win Api 4 12.02.2008 09:14
Как сделать снимок экрана в графическом режиме? Борис2 Паскаль, Turbo Pascal, PascalABC.NET 9 08.12.2007 21:07
Снимок экрана Viteef Общие вопросы Delphi 9 16.05.2007 20:12