Цитата:
создать один раз при нажатии на кнопку и отпустить при событии Form.Destroy?
|
В корне не верно. Снова считаем. Что будет, если кнопку не нажать? При закрытии формы удалится то, чего нет. Что будет, если кнопку нажать 100 раз? 99 из выделенных DC не удалятся.
Очевидно, удалять надо:
1) Прямо перед созданием, если DC не нуль. То есть инициализировать DC нулем, и перед выделением проверять: если он не нуль - удалить и занулить. Так обеспечится удаление того, что нагенерируется тыканием на кнопку.
2) При закрытии формы для удаления последнего.
При этом надо подумать на тему: а что будет, если анализируемое окно закроется во время работы нашей программы?
Поэтому наилучший вариант совсем иной - выделять DC при заходе в таймер и освобождать при выходе. А сохранять хендл окна, а не его DC.
Цитата:
его придется то же поместить в цикл?
|
Этот код копирует 1 пиксель с DC в битмап как отдельное изображение. В чем глубинный смысл сего извращения, я так и не осознал. Я предлагаю скопировать всё DC в битмап до цикла. Соответственно, размер битмапа должен быть как у окна в данный момент.
Или же брать пиксели в цикле прямо с DC, что видится самым логичным решением. Задача ведь требует считать малое число (четыре) отдельных разбросанных пикселей с экрана, а не обрабатывать фотографии. Зачем вся эта фигня с BMP?