Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 26.03.2013
Сообщений: 114

Cкриншот определенной области экрана

28.09.2013, 17:23. Показов 3864. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть код который делает скриншот экрана!!! как его переделать таким образом что бы бралось изображение не всего экрана а определенной области (область задается координатами)!!!
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TPicture *p=new TPicture;
HWND hwnd=GetDesktopWindow();
HDC hdc=GetWindowDC(hwnd);
TCanvas *C=new TCanvas;
C->Handle=hdc;
int w=Screen->Width;
int h=Screen->Height;
p->Bitmap->Width=w;
p->Bitmap->Height=h;
p->Bitmap->Canvas->CopyMode=cmSrcCopy;
p->Bitmap->Canvas->CopyRect(TRect(0,0,w,h),C,TRect(0,0,w,h));
ReleaseDC(hwnd,hdc);
p->Bitmap->SaveToFile("C:\\Users\\Dimon\\Desktop\\form.bmp");
Image1->Picture->LoadFromFile("C:\\Users\\Dimon\\Desktop\\form.bmp");
delete p;
delete C;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.09.2013, 17:23
Ответы с готовыми решениями:

Снять скриншот с области экрана
Написано на borland turbo c++ 2006, проблемма состоит в том, что я не знаю как снимать не весь скрин экрана, а допустим только мною...

Изменение размеров рабочей области экрана
Всем доброго времени суток. У меня такой вопрос: Размеры области экрана не занятой полосой задач изменены (исп-я ф-цию...

Выделение области экрана без перерисовки
Добрый день. Может знает кто, как выделить область экрана без перерисовки(без вызова FormPaint) или же перерисовки только...

3
 Аватар для Gremlin
519 / 307 / 58
Регистрация: 30.07.2008
Сообщений: 607
28.09.2013, 18:26
для вашего кода, нужно изменять
C++
1
2
3
int w=Screen->Width; // ширина 800
int h=Screen->Height; // высота 600
p->Bitmap->Canvas->CopyRect(TRect(0,0,w,h), C, TRect(x, y, w, h)); // x, y позиции смещения
или CPP Builder
C++
1
2
3
4
5
6
7
8
9
10
11
    int x = 100;
    int y = 200;
    int width = 800;
    int height = 600;
 
    Graphics::TBitmap* bmp = new Graphics::TBitmap();
    bmp->Width = width;
    bmp->Height = height;
    BitBlt(bmp->Canvas->Handle, 0, 0, width, height, GetDC(0), x, y, SRCCOPY);
    bmp->SaveToFile("c:\\123.bmp");
    delete bmp;
2
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
04.11.2015, 09:16
Апну тему
Как сделать то же самое, только, например, как в ножницах "семерки" ?
Я понимаю что нужно использовать MouseDown и MouseUP для определения координат, но как сделать некое подобие ножниц? Пните пожалуйста в нужном направлении

Добавлено через 14 часов 55 минут
Единственное что пока пришло в голову - создать полу-прозрачную форму на весь экран, и уже на этой форме использовать обработчики MouseDown, MouseUp, MouseMove. Но как добиться такого эффекта, чтобы выделяемая область становилась вообще прозрачной ?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
05.11.2015, 23:12
Решил вопрос
Если кому интересно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TOblast_Screen_Form::FormMouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
{
    //если зажата левая мышь
        if(Shift.Contains(ssLeft))
    {
            //установим зеленый цвет карандашу для рисования области
            Oblast_Screen_Form->Repaint();
            Oblast_Screen_Form->Canvas->Pen->Color = clGreen;
            Oblast_Screen_Form->Canvas->Pen->Style = psDash;
            Oblast_Screen_Form->Canvas->Rectangle(x0, y0, X, Y);
        }
}
 
void __fastcall TOblast_Screen_Form::FormMouseDown(TObject *Sender, TMouseButton Button,
          TShiftState Shift, int X, int Y)
{
    //обработаем начальной точки, т.е. верхний левый угол
        //сохраним координаты начальной точки
        x0 = X;
        y0 = Y;
        //очищаем канву от рисунков
        Oblast_Screen_Form->Repaint();
}
x0 и y0 - глобальные переменные int
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2015, 23:12
Помогаю со студенческими работами здесь

Очистка экрана в определенной области
есть ли такая ф-я, которая очищает экран в определенной области? например, очистить с 3 строки 4 колонки по 5й строки 6 колонки.

Создание скриншота определенной области экрана
Добрый день. Стоит передо мной задача делать скриншоты определенной части экрана и последующая обработка их через OpenCV. Пытался...

Отлов цвета в определенной области экрана
Всем доброго времени суток. На сколько сложно реализовать такой механизм? Хочется автоматизировать некоторые вещи. Ситуация такая: в...

Блокировка определенной области в П.О
Всем привет! Нужна ваша помощь с решением 1-й проблемы) Проблема вот в чем, как в паскале сделать блокировку опр. координат на экране в...

Выделение определенной области
Объясните как будет выглядеть условие того, что мы хотим выделить область, закрашенную зеленым цветом. Нужен не столько готовый ответ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru