Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
#1

Скриншот программно. - C++

28.06.2011, 23:47. Просмотров 2074. Ответов 4
Метки нет (Все метки)

Добрый вечер.
Сделал скриншот программно:
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
25
26
27
28
29
30
31
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HDC hdc = GetDC(0);
    if (hdc)
    {
        Graphics::TBitmap* bmp = new Graphics::TBitmap();
        __try
        {
            int W = Screen->Width;  
            int H = Screen->Height; 
            bmp->Width = W; 
            bmp->Height = H;    
            BitBlt(bmp->Canvas->Handle, 0, 0, W, H, hdc, 0, 0, SRCCOPY);
            TJPEGImage* jpg = new TJPEGImage(); 
            __try
            {
                jpg->Assign(bmp);     
                jpg->CompressionQuality = 65; 
                jpg->SaveToFile("1.jpeg");
            }
            __finally
            {
                delete jpg;
            };
        }
        __finally
        {
            delete bmp;
        };
    };
}
Сохраняю его как 1.jpeg.
Как мне сделать так, чтобы скриншот каждый раз не перезаписывался, а сохранялся как 2.jpeg 3.jpeg и т.д.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2011, 23:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скриншот программно. (C++):

Программно загрузить веб-страницу, вставить текст и программно нажать кнопку - C++
Здравствуйте ув. Програмеры. Каким образом можно згрузить веб страницу, вставить в поле на странице текст из текстового файла и...

Скриншот - C++
с помощью какой библиотеке можно сделать скриншот экрана? я так предполагаю нужно в сторону winapi ? но куда именно?

скриншот экрана! - C++
нужно сделать захват экрана. и сохранить его в файл. порывшись в просторах форума, выяснил что для решения данной задачи существует куча...

Скриншот экрана - C++
Мне нужно сделать скриншот экрана (того, что видит юзер ежесекундно). Перерыл уже кучу форумов, но не нашел подходящего + понятного. Кто...

Скриншот экрана - C++
Всем привет как в visual studio мне сделать скриншот экрана, а потом смотреть цвет пикселей в указанных координатах на фотографии? Или как...

Скриншот в файл + итерации - C++
В чем задача: После некой операции, программа должна сохранять всё, что есть на экране в файл. Много раз. Точнее вбить одну функцию с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
28.06.2011, 23:52 #2
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Добавлено через 15 секунд
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
29.06.2011, 00:02  [ТС] #3
Цитата Сообщение от Mиxaил Посмотреть сообщение
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Добавлено через 15 секунд
сделай счетчик изображений, после каждой итерации увеличивай, полученное число переводи строку. Дальше к строке прибавь ".jpeg" и передавай
C++
1
jpg -> SaveToFile( NameOfPicture ); // std::string NameOfPicture
Ну цикл написать не проблема, а вот прибавить строку и передать её, это уже сложновато.
Вы не мог ли бы наметать быстро?
Просто пока я разберусь...., а всем, как всегда хочется быстрее... =) (я просто в диплом функцию эту вставил, а его сдача - завтра)
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
29.06.2011, 00:08 #4
вот попробуй.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      static int  counter = 0;  // счётчик
    
HDC hdc = GetDC(0);
        if (hdc)
    {
        Graphics::TBitmap* bmp = new Graphics::TBitmap();
        __try
        {
            int W = Screen->Width;  
            int H = Screen->Height; 
            bmp->Width = W; 
            bmp->Height = H;    
                        BitBlt(bmp->Canvas->Handle, 0, 0, W, H, hdc, 0, 0, SRCCOPY);
            TJPEGImage* jpg = new TJPEGImage(); 
            __try
            {
                                jpg->Assign(bmp);     
                jpg->CompressionQuality = 65; 
                              
                           counter++;
                           AnsiString  file_name = IntToStr(counter) + ".jpg";   // линкуем
                      
                                jpg->SaveToFile(file_name);
            }
            __finally
            {
                delete jpg;
            };
        }
        __finally
        {
            delete bmp;
        };
        };
}
Grex
1 / 1 / 0
Регистрация: 03.12.2008
Сообщений: 55
29.06.2011, 00:19  [ТС] #5
Цитата Сообщение от xAtom Посмотреть сообщение
вот попробуй.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
void __fastcall TForm1::Button2Click(TObject *Sender)
{
      static int  counter = 0;  // счётчик
    
HDC hdc = GetDC(0);
        if (hdc)
    {
        Graphics::TBitmap* bmp = new Graphics::TBitmap();
        __try
        {
            int W = Screen->Width;  
            int H = Screen->Height; 
            bmp->Width = W; 
            bmp->Height = H;    
                        BitBlt(bmp->Canvas->Handle, 0, 0, W, H, hdc, 0, 0, SRCCOPY);
            TJPEGImage* jpg = new TJPEGImage(); 
            __try
            {
                                jpg->Assign(bmp);     
                jpg->CompressionQuality = 65; 
                              
                           counter++;
                           AnsiString  file_name = IntToStr(counter) + ".jpg";   // линкуем
                      
                                jpg->SaveToFile(file_name);
            }
            __finally
            {
                delete jpg;
            };
        }
        __finally
        {
            delete bmp;
        };
        };
}
Блин, Атом....! Ты зверь ). Спасибо тебе огромное, не раз меня выручил!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2011, 00:19
Привет! Вот еще темы с ответами:

Скриншот, работа с bmp - C++
Возникла необходимость создания скриншота неактивого окна. В результате долгих поисков, по гуглу я наткнулся на следующий рабочий код: ...

Клиент-сервер , скриншот - C++
Нужно написать на Си++ программу - клиент-сервер, в которой при нажатии кнопки у клиента, сервер делает у себя скриншот и пересылает его на...

Скриншот окна программы - C++
Требуется при нажатии (например, кнопки "s"), чтобы делался скриншот окна программы (командной строки) и сохранялся в определенную...

Скриншот раб стола + видео - C++
Как сделать скриншот рабочего стола и чтоб видео на нем было б изображено черным квадратом?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
29.06.2011, 00:19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru