Zrzut wybranego komponentu z ekranu

0

Witam Wszystkich

Potrzebuję w delphi zrobić możliwość zrzutu z ekranu wybranego komponentu lub części ekranu.
Na przykład, jak wykonać zrzut okna MDI ("alt+prtint screen" nie działa)?
Albo jak zrobić zrzut jakiegoś przycisku.
Fajnie by było, aby program podświetlał (zaznaczał), który komponent możemy skopiować do schowka.
Tak właśnie działa program "FastStone Capture".

Czy ma ktoś jakiś pomysł?
Będę wdzięczny za jakiekolwiek sugestie.

Pozdrawiam

0

Nie znam niestety odpowiedzi na to pytanie, ale chętnie też bym przeczytał sposób na tem problem.
P.S. Mój problem jest identyczny.

0

a spróbuj tak jak tu http://www.scalabium.com/faq/dct0001.htm tylko zamiast GetDesktopWindow podaj uchwyt jakiejś kontrolki i zamiast Screen.Width, Screen.Height wymiary tej kontrolki (można pobrać GetWindowInfo)

0

powiem jak ja bym to zrobil (jesli chodzi o "podswietlenie"):

  1. pobierasz handle okna znajdujacego sie pod cursorem myszy.
    (GetCursorPos() lub po prostu Mouse.CursorPos a potem WindowFromPoint() )

  2. Pobierasz rozmiary i pozycje oknam czyli prostokat:
    GetWindowRect()

  3. rysujesz na canvasie ramke.

  4. potem muszisz jakos ja usunac wiec albo rysujesz ramke XORem (proponuje DrawFocusRect()) i potem ja usuwasz rysujac ja jeszcze raz (brzmi dziwnie ale tak jest ;] ) albo robisz po prostu RedrawWindow() lub InvalidateRect().

nie wiem tylko co lepsze:
czy rysowac po screenie (Canvas.Handle:=GetWindowDC(GetDesktopWindow))
czy rysowac tylko po oknie (C.Handle:=GetWindowsDC(uchwyt_okna)).
po screenie bedzie o tyle latwiej, ze nie musimy robic przeliczen jesli chodzi o pozycje okna.

pozdrawiam
cimak

0

Witam,
Dziękuję za wszelkie informacje, które naprawdę mi pomogły, zostało mi do zrobienia "podświetlanie" i powinno być ok.

Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.