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

Прямоугольник на экране - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Rustam
 Аватар для Rustam
11 / 11 / 3
Регистрация: 05.09.2009
Сообщений: 437
12.07.2011, 18:09     Прямоугольник на экране #1
Всем привет! как можно сделать в DirectDraw так, чтобы например через 30 секунд появился прямоугольник на экране и например через 10 секунд исчез с экрана? и еще выложите пожалуйста примеры?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2011, 18:09     Прямоугольник на экране
Посмотрите здесь:

C++ прямоугольник
C++ Нарисовать прямоугольник
Прямоугольник C++
3D прямоугольник C++
прямоугольник и овал C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.07.2011, 18:39     Прямоугольник на экране #2
если вы не в состоянии сами найти информацию в поисковике то вам еще рановато осваивать такие технологии, начните с WinApi
C
1
2
3
4
5
6
7
8
9
#include <Windows.h>
 
int main()
{
//  Sleep(30000);
    Rectangle(GetDC(GetConsoleWindow()), 20, 20, 220, 120);
    Sleep(10000);
    return 0;
}
supercyber
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 3
14.08.2011, 23:35     Прямоугольник на экране #3
ЗдОрово! Если Rectangle заменить на Ellipse то получится овал. А как изменить цвет заливки? Я делаю первые шаги, с "Hello, World!" все понятно, а по простейшей графике на форуме информации маловато. Спасибо.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 00:16     Прямоугольник на экране #4
C
1
2
3
4
5
6
7
8
9
10
11
#include <Windows.h>
 
int main()
{
    HDC hdc = GetDC(GetConsoleWindow());
    SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));
//    Rectangle(hdc, 20, 20, 220, 120);
    Ellipse(hdc, 50, 50, 200, 200);
    Sleep(10000);
    return 0;
}
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.08.2011, 01:13     Прямоугольник на экране #5
хм.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <QApplication>
#include <QGraphicsScene>
 
int main ( int agrc, char** agrv )
{
       QApplication       app ( agrc, agrv );
       QGraphicsScene scene(200, 300, 0, 0);
       QGraphicsView   view(&scene);
       view.show();
       Sleep(30000);
       QGraphcisRectItem* pRectItem = new QGraphicsRectItem(50, 50, 40, 60, QPen(Qt::black, 4, Qt::SolidLine);
       Slepp(10000);
       pRectItem->hide();
       return app.exec();
}
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,561
Записей в блоге: 17
15.08.2011, 07:20     Прямоугольник на экране #6
HDC hdc = GetDC(GetConsoleWindow());
SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));
// Rectangle(hdc, 20, 20, 220, 120);
Ellipse(hdc, 50, 50, 200, 200);
Sleep(10000);
return 0;

C++
1
 ReleaseDC(hdc,GetConsoleWindow());
supercyber
0 / 0 / 0
Регистрация: 13.08.2011
Сообщений: 3
15.08.2011, 12:49     Прямоугольник на экране #7
Использую VS 2010 WinXP.

Цитата Сообщение от Maxwe11 Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
#include <Windows.h>
 
int main()
{
    HDC hdc = GetDC(GetConsoleWindow());
    SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));
//    Rectangle(hdc, 20, 20, 220, 120);
    Ellipse(hdc, 50, 50, 200, 200);
    Sleep(10000);
    return 0;
}
Спасибо, работает.

Цитата Сообщение от co6ak Посмотреть сообщение
хм.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <QApplication>
#include <QGraphicsScene>
 
int main ( int agrc, char** agrv )
{
       QApplication       app ( agrc, agrv );
       QGraphicsScene scene(200, 300, 0, 0);
       QGraphicsView   view(&scene);
       view.show();
       Sleep(30000);
       QGraphcisRectItem* pRectItem = new QGraphicsRectItem(50, 50, 40, 60, QPen(Qt::black, 4, Qt::SolidLine);
       Slepp(10000);
       pRectItem->hide();
       return app.exec();
}
Спасибо, этот вариант сложнее и зрелищнее , но, для него, очевидно, требуется Qt (?). Когда немножко продвинусь - обязательно попробую.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,561
Записей в блоге: 17
15.08.2011, 14:57     Прямоугольник на экране #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <Windows.h>
 
int main()
{
    HDC hdc = GetDC(GetConsoleWindow());
    SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));
//    Rectangle(hdc, 20, 20, 220, 120);
    Ellipse(hdc, 50, 50, 200, 200);
    Sleep(10000);
 
    ReleaseDC(hdc,GetConsoleWindow()); // освободить устройство,а то будет утечка памяти
    return 0;
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 15:07     Прямоугольник на экране #9
Avazart, GetDC выделяет динамическую память?
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,561
Записей в блоге: 17
15.08.2011, 15:12     Прямоугольник на экране #10
Походу да, но я неуверен в формулеровке выделяется память. Но устройство надо освобождать- это проверено, писал бота - долго мучился с этой темой
LosAngeles
Заблокирован
15.08.2011, 15:15     Прямоугольник на экране #11
C++
1
2
3
4
5
6
7
int main()
{
    while (1)
    ::GetDC(NULL);
 
  getch();
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
15.08.2011, 15:38     Прямоугольник на экране #12
Цитата Сообщение от Avazart Посмотреть сообщение
Походу да, но я неуверен в формулеровке выделяется память.
насколько я знаю, каждый хендл это просто номерочек в памяти, а вызывая Release мы освобождаем этот номер для другого приложения, так что утечки памяти быть не должно
Digit@ll
Brainsbreaker
 Аватар для Digit@ll
832 / 343 / 27
Регистрация: 01.02.2011
Сообщений: 1,483
15.08.2011, 15:45     Прямоугольник на экране #13
Цитата Сообщение от Avazart Посмотреть сообщение
ReleaseDC(hdc,GetConsoleWindow());
Avazart, закрой на это глаза, программа уже благополучно отработала.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,561
Записей в блоге: 17
15.08.2011, 16:04     Прямоугольник на экране #14
насколько я знаю, каждый хендл это просто номерочек в памяти, а вызывая Release мы освобождаем этот номер для другого приложения, так что утечки памяти быть не должно
C++
1
2
3
4
5
6
7
8
9
10
11
int main(int argc, char* argv[])
{
 for (;;)
   {
    HDC hdc = GetDC(GetConsoleWindow());
    SelectObject(hdc, CreateSolidBrush(RGB(255, 0, 0)));
    Rectangle(hdc, 20, 20, 220, 120);
    Ellipse(hdc, 50, 50, 200, 200);
    }
return 0;
}
И следите за памятью
Миниатюры
Прямоугольник на экране  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2011, 16:11     Прямоугольник на экране
Еще ссылки по теме:

C++ нарисовать прямоугольник
Прямоугольник C++
Класс Прямоугольник C++

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

Или воспользуйтесь поиском по форуму:
LosAngeles
Заблокирован
15.08.2011, 16:11     Прямоугольник на экране #15
и в моём примере память, занимаемая приложением, растёт
Yandex
Объявления
15.08.2011, 16:11     Прямоугольник на экране
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru