Как сделать снимок экрана с помощью C ++ Builder?

Я знаю, что есть много ответов на мой вопрос, но я никогда не понимаю, что я делаю.

Мне просто нужно сделать снимок экрана части моей Формы в любой ОС, например:

Сделайте снимок экрана с позиции X = 30 до X = 80 и Y = 30 до Y = 200 Итак, в этом случае изображение должно иметь размер 50×170 пикселей, но я хочу решение, которое работает с любым разрешением.

Формат изображения может быть JPEG, GIF, PNG или BMP (Bitmap).
Это просто …

В настоящее время я использую библиотеку FMX, но если у вас есть код, который работает с VCL, я могу попробовать изменить его в соответствии с моими потребностями.
Если есть другой вопрос, как этот, пожалуйста, не воспринимайте мой как «плохой вопрос», я все еще новичок, желающий узнать немного больше.

PS: я пытаюсь сделать это с любым устройством / ОС, поэтому я хочу избегать использования API.

Большое спасибо!

-1

Решение

FireMonkey-х TForm класс имеет PaintTo() метод. Создать два TBitmap объекты, передайте первое растровое изображение Canvas в PaintTo()затем позвоните CopyFromBitmap() на втором растровом изображении с указанием желаемых координат, затем вы можете использовать второе растровое изображение по мере необходимости. Например:

void __fastcall TMyForm::GrabScreenshot()
{
TRect r(30, 30, 80, 200);

TBitmap *bmp1 = new TBitmap;
bmp1->SetSize(ClientWidth, ClientHeight);
PaintTo(bmp1->Canvas);

TBitmap *bmp2 = new TBitmap;
bmp2->SetSize(r.Width, r.Height);
bmp2->CopyFromBitmap(bmp1, r, 0, 0);
delete bmp1;

// use bmp2 as needed...
delete bmp2;
}
3

Другие решения


По вопросам рекламы [email protected]