Получение пустых скриншотов в WebBrowser под Mac - PullRequest
0 голосов
/ 07 марта 2019

Ниже приведен фрагмент кода в Firemonkey для захвата холста WebBrowser. Он отлично работает в Windows, однако в Mac OS я получаю пустой скриншот.

TBitmap* TForm1::getScreenshotWebBrowser() {
TBitmap *BitmapBuffer;
TBitmap *bmp_Scrhot = new TBitmap;

TRectF SourceRect(0, 0, WebBrowser1->Width, WebBrowser1->Height);
TRect Rect_bmp(0, 0, WebBrowser1->Width, WebBrowser1->Height);

BitmapBuffer = new TBitmap(SourceRect.Width(), SourceRect.Height());
try {

    if (BitmapBuffer->Canvas->BeginScene())
        try {

        WebBrowser1->PaintTo(BitmapBuffer->Canvas, SourceRect);
        }
    __finally {

        BitmapBuffer->Canvas->EndScene();
    }
    BitmapBuffer->SaveToFile(GetHomePath() +"/screenshot1.png");
    bmp_Scrhot->Width = Rect_bmp.Width();
    bmp_Scrhot->Height = Rect_bmp.Height();
    bmp_Scrhot->CopyFromBitmap(BitmapBuffer, Rect_bmp, 0, 0);
    bmp_Scrhot->SaveToFile(GetHomePath() +"/screenshot2.png");
}
__finally {
    delete BitmapBuffer;
}
return bmp_Scrhot;

P.S. Экспериментируя, я обнаружил, что если я собираю всю форму, содержащую холст WebBrowser, то снимок экрана не будет полностью пустым. Он имеет элементы управления формы, такие как кнопки, разделители и т. Д. Но холст браузера среди них все еще пуст.

...