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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2013, 14:25   #1
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию Скриншот части экрана

Имеется фигура Shape1 Rectangle. Нужно чтобы при нажатии горячей клавиши делался скриншот области на которую наведен квадрат и сохранялся в какую-то переменную ( для дальнейшего сравнения по пикселям). Написал горячие клавиши (стрелки ) для перемещения этого квадрата. В графике разбираюсь плохо, с WinAPI если он нужен тоже беда. Да и canvas использую впервые Так что прошу помощи
Praud вне форума Ответить с цитированием
Старый 09.08.2013, 14:27   #2
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Код:
if Msg.HotKey = id1 then
begin
Application.ProcessMessages;
form2.Hide;
end;

if Msg.HotKey = id2 then
begin
Application.ProcessMessages;
Shape1.Top:=Shape1.Top-5;
end;

if Msg.HotKey = id3 then
begin
Shape1.Left:=Shape1.Left-5;
end;

if Msg.HotKey = id4 then
begin
Shape1.Top:=Shape1.Top+5;
end;

if Msg.HotKey = id5 then
begin
Shape1.Left:=Shape1.Left+5;
end;

if Msg.HotKey = id6 then
begin
//..................??? (скриншот экрана)
end;
Praud вне форума Ответить с цитированием
Старый 09.08.2013, 14:28   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

собственно в кодах на снятие скрина в функции BitBlt идут координаты нужные вам, в чем проблема заменить?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.08.2013, 14:39   #4
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
собственно в кодах на снятие скрина в функции BitBlt идут координаты нужные вам, в чем проблема заменить?
Можете этот код предоставить?
Praud вне форума Ответить с цитированием
Старый 09.08.2013, 14:46   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://www.programmersforum.ru/showthread.php?t=1758
Подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2013, 14:55   #6
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Какой из? Говорю же я с WinAPI очень туго разбираюсь, я очень примерно понимаю что творится в этих кодах
Praud вне форума Ответить с цитированием
Старый 09.08.2013, 15:41   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Говорю же я с WinAPI очень туго разбираюсь, я очень примерно понимаю что творится в этих кодах
Так это ваша проблема. Я(Мы) разбираемся в WinAPI, но мне(нам) не интересна ваша задача.

Вся суть WinAPI сводится к чтению описания функций/методов/структур из оф. источника( он же MSDN) и применения упомянутых.

Можно и совсем по умному и хитрому:
Берем форму, и делаем её видимой на 1 из 255 возможных.
На форме таймер, который вокруг окна рисует полностью видимый квадрат.

Вот и все. В итоге юзер имеет очень подвижную рамку для выделения нужного участка окна. А вам остается взять Rectangle этого окна и применить к битболту .
Человек_Борща вне форума Ответить с цитированием
Старый 09.08.2013, 15:42   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да ты любой проверь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.08.2013, 17:27   #9
Praud
Форумчанин
 
Аватар для Praud
 
Регистрация: 11.10.2012
Сообщений: 409
По умолчанию

Вот нашел код
Код:
var 
Sdc:HDc; 
Can:Tcanvas; 
begin 
sdc:=GetDc(0); 
Can:=Tcanvas.Create(); 
Can.Handle:=sdc; 
width:=screen.Width; 
Height:=Screen.Height; 
image1.Canvas.CopyRect(rect(0, 0, image1.width, Image1.Height), canvas, Rect(0, 0, Screen.Width, Screen.Height)); 
ReleaseDc(0, sdc); 
can.Free; 
image1.Picture.Bitmap.SaveToFile('zlo.bmp'); 
end;
Вот только мне в Image1 оно засовывает просто черный квадрат Малевича.
Praud вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скриншот экрана через OpenGL UltraCoder Qt и кроссплатформенное программирование С/С++ 0 08.08.2012 17:46
Как сделать скриншот определенной части экрана? JonMagon Помощь студентам 11 13.05.2011 09:45
Скриншот экрана dradysman Общие вопросы Delphi 2 14.04.2010 15:17
Скриншот экрана ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 5 08.07.2008 12:35
Скриншот экрана Terran Общие вопросы Delphi 2 16.12.2007 15:13