Сравнение изображения и окна
#1
Отправлено 20 марта 2008 - 12:56
У меня есть изображение окна, сохраненное на жестком диске и само окно в приложении, мне надо их сравнить и выдать результат. Все было бы отлично и можно было бы воспользоваться Region.Compare, но есть одна неприятность. На окне программы отображается время (равное системному). А на сохраненной картинке время соответственно другое. Можно ли как-то сравнить не просто две картинки один в один, а как бы их выделенные фрагменты? Чтобы системная дата не попадала в выделенные для сравнения фрагменты? Спасибо большое за ответы. Уже 2 дня над этой проблемой бьюсь.
#2
Отправлено 20 марта 2008 - 13:20
У каждого оконного объекта есть метод Picture, которому в качестве параметров можно передавать координаты прямоугольной области, в которой надо снять изображение. С помощью этих параметров вы можете извлечь только ту область, которая вам нужна. И сравнивать изображения, соответственно, только заданных областейДоброго времени суток. Прочитал почти все темы, но так и не нашел нужного мне. У меня такой вопрос. Приложение написано на Delphi 7, использую TC 5.14. Такой вопрос:
У меня есть изображение окна, сохраненное на жестком диске и само окно в приложении, мне надо их сравнить и выдать результат. Все было бы отлично и можно было бы воспользоваться Region.Compare, но есть одна неприятность. На окне программы отображается время (равное системному). А на сохраненной картинке время соответственно другое. Можно ли как-то сравнить не просто две картинки один в один, а как бы их выделенные фрагменты? Чтобы системная дата не попадала в выделенные для сравнения фрагменты? Спасибо большое за ответы. Уже 2 дня над этой проблемой бьюсь.
#3
Отправлено 20 марта 2008 - 13:25
1) Закрасить фрагменты сохраненной картинки, которые не надо использовать при сравнении, каким-нибудь цветом, которого больше нет на картинке. Ярко-красным, например.
2) Закрасить верхний левый пиксел изображения тем же цветом.
3) При вызове метода Regions.Compare в качестве 3го параметра (Transparent) передать True:
Regions.Compare("ImageNameInRegions", onscreenObj, true)
См. также описание метода Regions.Compare, в т.ч. параметра Transparent, в справке.
#4
Отправлено 20 марта 2008 - 18:03
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных