Конференция "Media" » Реализация копирования/захвата области, выделенной клиентом [D7, WinXP]
 
  • Максим (15.12.10 10:48) [0]
    Всем добрых суток.
    Поискал в поиске не нашел.

    Хочу реализовать функцию копирования части экрана, выделенную пользователем.

    Как я вижу:
    По нажатию горячих клавиш пользователь выделяет необходимую область/часть экрана для копирования. Выделение в виде прямоугольника, то есть необходимо пользователю указать координаты левого верхнего угла и нижнего правого.

    Например: Указав кликом первую координату за курсором тянется прямоугольник до второго клика.

    Но с толкнулся с проблемой, что не могу сообразить с чего начинать. Как реализовать? Поделитесь опытом или где можно почитать?

    Спасибо.
  • han_malign (16.12.10 08:48) [1]
    google: по отрисовке - screenmate, по копированию - screenshot
  • antonn © (16.12.10 13:45) [2]
    может это надоумит http://desksoft.ru/index.php?forum=13&th=113
  • Максим (17.12.10 09:37) [3]
    Спасибо, antonn, на 60% то что нужно буду смотреть
  • Максим (17.12.10 09:37) [4]
    Спасибо, antonn, на 60% то что нужно буду смотреть
  • Максим (17.12.10 10:09) [5]
    А вообще возможна реализация задумки без создания формы и размещения скрина на ней ?
  • Студент (03.02.11 13:26) [6]
    Копирование - GetDC() + BitBlt() [про флаг captureblt не забудьте] + ReleseDC()
    Копирование хоть из консоли можно делать, а вот выделять-то как?
    Ну сделайте просто окно с регионом в форме тонкой рамки + SerCapture() и ловите WM_MOVE...
  • babanyukv (23.11.13 20:42) [7]
    Ну как справились ?
    ___________________
    http://www.sgtour.ru/countries/spain/kurorts/costa_dorada/
  • Juggernaut (03.12.13 13:17) [8]
    > А вообще возможна реализация задумки без создания формы и размещения скрина на ней ?

    Просто на GetDC(0) рисовать не рекомендуется. Да и не получится нормально. Вывод: если нужно дать пользователю возможность выделить область мышкой - создавать окно придётся.
    Можно не рисовать, а использовать в качестве рамки само окно - SetWindowRgn().

    > про флаг captureblt не забудьте

    Это для поддержки Win2000/WinXP. В более ранних его нет, в более поздних оно и без него работает как с ним.
 
Конференция "Media" » Реализация копирования/захвата области, выделенной клиентом [D7, WinXP]
Есть новые Нет новых   [134427   +38][b:0][p:0]