Screenshot z okna
Napisane: środa, 20 lipca 2016, 00:09
Witam!
Mam proste pytanie odnośnie sposobu, który został opisany w temacie "Zrzuty z ekranu" na Waszej stronie. Kod wyglądał następująco:
Czy funkcja GetWindowRect jest obowiązkowa w tym przypadku? Czy zamiast pobierać rozmiaru okna tą funkcją, mogę wypełnić ręcznie obiekt o nazwie "oR"?
na przykład:
Czy to oznacza, że byłby to wycinek okna 100x100 pikseli, umieszczony od lewego, górnego rogu okna?
Czy jeśli wypełnię ręcznie obiekt oR to muszę również ręcznie obliczyć oR.Width i oR.Height?
Pytam dlatego, że próbowałem wypełniać tą strukturę ręcznie bo nie chcę aby mój program robił zrzut całego okna, tylko wycinek, który ja zdefiniuję...i nie bardzo mi to wychodzi.
Mam proste pytanie odnośnie sposobu, który został opisany w temacie "Zrzuty z ekranu" na Waszej stronie. Kod wyglądał następująco:
KOD cpp: UKRYJ
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TCanvas *pCanvas = new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
HWND okno = FindWindow(NULL, "Form1");
pCanvas->Handle = GetWindowDC(okno);
TRect oR;
GetWindowRect(okno, &oR);
Bmp->Width = oR.Width();
Bmp->Height = oR.Height();
Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), pCanvas, Rect(0, 0, Bmp->Width, Bmp->Height));
Bmp->SaveToFile("c:\\ekran.bmp");
ReleaseDC(0, pCanvas->Handle);
delete pCanvas, Bmp;
}
{
TCanvas *pCanvas = new TCanvas();
Graphics::TBitmap *Bmp = new Graphics::TBitmap;
HWND okno = FindWindow(NULL, "Form1");
pCanvas->Handle = GetWindowDC(okno);
TRect oR;
GetWindowRect(okno, &oR);
Bmp->Width = oR.Width();
Bmp->Height = oR.Height();
Bmp->Canvas->CopyRect(Rect(0, 0, Bmp->Width, Bmp->Height), pCanvas, Rect(0, 0, Bmp->Width, Bmp->Height));
Bmp->SaveToFile("c:\\ekran.bmp");
ReleaseDC(0, pCanvas->Handle);
delete pCanvas, Bmp;
}
Czy funkcja GetWindowRect jest obowiązkowa w tym przypadku? Czy zamiast pobierać rozmiaru okna tą funkcją, mogę wypełnić ręcznie obiekt o nazwie "oR"?
na przykład:
KOD cpp: UKRYJ
TRect oR;
oR.Left = 0;
oR.Top = 500;
oR.Right = 100;
oR.Bottom = 400;
oR.Left = 0;
oR.Top = 500;
oR.Right = 100;
oR.Bottom = 400;
Czy jeśli wypełnię ręcznie obiekt oR to muszę również ręcznie obliczyć oR.Width i oR.Height?
Pytam dlatego, że próbowałem wypełniać tą strukturę ręcznie bo nie chcę aby mój program robił zrzut całego okna, tylko wycinek, który ja zdefiniuję...i nie bardzo mi to wychodzi.