Wycinanie części z obcego okna

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Wycinanie części z obcego okna

Nowy postprzez Michalos » poniedziaÅ‚ek, 1 marca 2010, 15:20

Witam!

Chcę wyciąć z okna innego programu pewien fragment np. 20x20. Ten kwadracik jest zawsze w tym samym miejscu, czyli mógłbym współrzędne punktu od którego ma zacząć wycinać obliczyć sobie procentowo/ułamkowo. Mam taki kod, ale się konkretnie pogubiłem i nie wiem już jak to tego podejść:

Kod: Zaznacz cały
TCanvas *pCanvas = new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;

pCanvas->Handle = GetWindowDC(h);
TRect rc;
GetWindowRect(h, &rc);
int width=rc.right-rc.left;
int height=rc.bottom-rc.top;
int w = 0.7 * width;
int h = 0.2 * height;
Bmp->Width = 20;
Bmp->Height = 20;
Bmp->Canvas->CopyRect(Rect(w, h, 20, 20), pCanvas, Rect(w, h, 20, 20));


Założeniem jest skopiowanie kwadraciku 20x20 z innego okna programu i zapisanie go do pliku.

Wiem, że ten kod jest eghm beznadziejny, ale nie wiem jak do tego dokładnie podejść, aby wycinany był zawsze ten sam kwadrat.

Czekam na rady - z góry dzięki.

Pozdrawiam :)
Avatar użytkownika
Michalos
Bladawiec
Bladawiec
 
Posty: 35
Dołączył(a): niedziela, 19 października 2008, 11:45
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    Windows XPFirefox

Re: Wycinanie części z obcego okna

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 1 marca 2010, 15:35

Po co tak kombinujesz?!

Wykonaj zrzut ekranu, nie musi być do pliku, wystarczy do obiektu klasy TBitmap. Masz to opisane w serwisie Cyfrowy Baron w dziale: porady -> grafika -> zrzut ekranu.
Potem wytnij z tego,czyli skopiuj tylko wybrany fragment grafiki i zapisz w drugim obiekcie typu TBitmap, a potem zrób z tym co chcesz.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wycinanie części z obcego okna

Nowy postprzez Michalos » poniedziaÅ‚ek, 1 marca 2010, 16:09

To nie zda egzaminu wg mnie.

Zrzut ekranu zostanie zrobiony bez względu na to w którym miejscu znajduje się to moje szukane obce okno. a ten kwadracik musi byc zawsze z tego samego miejsca wycinany, raz np. okno moze byc w polozeniu (0,0) a raz (200,200) - wtedy nie będzie to działało jak powinno. Pozostaje może przywoływanie okna na wierzch i ustawienie w konkretnym miejscu... funkcja SetWindowPos?
Avatar użytkownika
Michalos
Bladawiec
Bladawiec
 
Posty: 35
Dołączył(a): niedziela, 19 października 2008, 11:45
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 0
    Windows XPFirefox

Re: Wycinanie części z obcego okna

Nowy postprzez Cyfrowy Baron » poniedziaÅ‚ek, 1 marca 2010, 16:48

Przecież robisz zrzut ekranu tego okna a nie całego pulpitu, więc położenie okna na pulpicie nie ma znaczenia. Potem obliczasz położenie tego kwadratu względem zrzutu okna. Nie ma też znaczenia czy okno jest na wierzchu czy nie, gdyż pobierasz uchwyt do okna, nie do pulpitu.
Czytałeś wogóle tą poradę?! Czego w niej nie rozumiesz?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


Powrót do Aplikacje multimedialne, graficzne

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 3 gości

cron