Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2024, 09:22   #1
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию Программирование графики Windows в Visual C++

Свершилось! 20 лет я ждал этого момента. Теперь я умею рисовать в Windows.
Примеры использования графики показаны ниже.

Код:
/*	 p160
 Язык Visual C++ 6.0
	 Графика. Рисунки.   */

int d = 0;		//   номер задачи

void CP160View::OnDraw (CDC *pDC)
{
	CP160Doc *pdoc = GetDocument ();
	ASSERT_VALID (pdoc);
	int a, b;

	if (d == 0)
	{
		//   160.56.1
		pDC -> Rectangle (10, 10, 650, 490);
		pDC -> MoveTo (11, 11);
pDC -> LineTo (649, 489);
		pDC -> MoveTo (649, 11);
pDC -> LineTo (11, 489);
		pDC -> Rectangle (50, 50, 300, 300);

		for (a = 83; a > 0; a -= 5)
			pDC -> Ellipse (110 - a, 110 - a, 110 + a, 110 + a);
	}

	if (d == 1)
	{
		//   92.1.2
		for (a = 0; a < 25; a++)
			for (b = 0; b < 25; b++)
				pDC -> SetPixel (5 * a + 30, 5 * b + 30, 0x1111);

		//   93.2.3
		pDC -> Rectangle (100, 100, 300, 300);		//   голова
		pDC -> Ellipse (120, 140, 180, 200);
		pDC -> Ellipse (220, 140, 280, 200);

		pDC -> Ellipse (150, 170, 45, 135);		//   бровь
		pDC -> Ellipse (250, 170, 200, 135);
		pDC -> Ellipse (200, 250, 0, 360);
		pDC -> Rectangle (130, 280, 270, 290);

		pDC -> MoveTo (100, 300);		//   шея
		pDC -> LineTo (50, 350);
		pDC -> LineTo (350, 350);
		pDC -> LineTo (299, 299);

		//   98.5.4
		for (a = 0; a < 9; a++)
		{
			pDC -> MoveTo (400 + a * 30, 30);
			pDC -> LineTo (400 + a * 30, 270);
			pDC -> MoveTo (400, 30 + a * 30);
			pDC -> LineTo (640, 30 + a * 30);
		}
	}
}

void CP160View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)
{
	d++;		//   переход к следующей задаче

	Invalidate ();
	CView::OnChar (nChar, nRepCnt, nFlags);
}
Код:
/*	 p31
 Язык Visual C++ 6.0
 Графики функций   */

#include <math.h>

int d = 0;		//   номер графика

void CP31View::OnDraw (CDC *pDC)
{
	CP31Doc *pdoc = GetDocument ();
	ASSERT_VALID (pdoc);
	int a, b, c, j;
	double g, h, i, m;

	if (d == 0)
	{
		//   31.2.1
		pDC -> MoveTo (10, 360);
		pDC -> LineTo (1010, 360);
		pDC -> MoveTo (510, 10);
		pDC -> LineTo (510, 710);

		pDC -> MoveTo (510, 360);
		pDC -> LineTo (160, 10);
		pDC -> MoveTo (510, 360);
		pDC -> LineTo (560, 310);
		pDC -> LineTo (1010, 310);

		//   32.5.2
		pDC -> MoveTo (510, 310);
		pDC -> LineTo (10, 310);
		pDC -> MoveTo (510, 310);
		pDC -> LineTo (560, 360);

		//   33.10.3
		pDC -> MoveTo (560, 210);
		pDC -> LineTo (460, 10);
		pDC -> MoveTo (560, 210);
		pDC -> LineTo (710, 210);
		pDC -> LineTo (810, 10);
	}

	if (d == 1)
	{
		//   45.1.4
		pDC -> MoveTo (10, 360);
		pDC -> LineTo (1010, 360);
		pDC -> MoveTo (510, 10);
		pDC -> LineTo (510, 710);

		for (a = 0; a < 1000; a++)
		{
			g = (a - 500) / 50.;
			h = fabs (2 * g + 1) - fabs (3 * g + 7);
			b = (int) (360 - h * 50);

			if (a == 0) {c = b; continue;}

			if (b >= 10  &&  b <= 710  &&  c >= 10  &&  c <= 710)
			{
				pDC -> MoveTo (a + 9, c);
				pDC -> LineTo (a + 10, b);
			}

			c = b;
		}

		//   47.3.5
		pDC -> MoveTo (510, 310);
		pDC -> LineTo (1010, 310);
		pDC -> MoveTo (510, 410);
		pDC -> LineTo (10, 410);

		//   46.2.6
		for (a = 0; a < 1000; a++)
		{
			g = (a - 500) / 50.;
			g += 1;
			j = 1;
			if (g < 0) {g = -g; j = -1;}		//   знак аргумента

			h = exp (1 / 3. * log (g)) * j;
			b = (int) (360 - h * 50);
			if (a == 0) {c = b; continue;}

			if (b >= 10  &&  b <= 710  &&  c >= 10  &&  c <= 710)
			{
				pDC -> MoveTo (a + 9, c);
				pDC -> LineTo (a + 10, b);
			}

			c = b;
		}
	}

	if (d == 2)
	{
		//   51.1.7
		pDC -> MoveTo (10, 360);
		pDC -> LineTo (1010, 360);
		pDC -> MoveTo (510, 10);
		pDC -> LineTo (510, 710);

		pDC -> MoveTo (460, 260);
		pDC -> LineTo (335, 10);
		pDC -> MoveTo (460, 260);
		pDC -> LineTo (560, 260);
		pDC -> LineTo (685, 10);

		//   52.6.8
		for (a = 0; a < 1000; a++)
		{
			g = (a - 500) / 50.;

			i = g;		//   член ряда
			m = g;	//   результат суммирования
			for (j = 2; j < 10; j += 2)
			{
				i *= -g * g / j / (j + 1);
				m += i;
			}

			h = m;	//   результат суммирования ряда разложения синуса
			b = (int) (360 - h * 50);

			if (a == 0) {c = b; continue;}

			if (b >= 10  &&  b <= 710  &&  c >= 10  &&  c <= 710)
			{
				pDC -> MoveTo (a + 9, c);
				pDC -> LineTo (a + 10, b);
			}

			c = b;
		}

		for (a = 0; a < 1000; a++)
		{
			g = (a - 500) / 50.;
			h = sin (g);
			b = (int) (360 - h * 50);

			if (a == 0) {c = b; continue;}

			if (b >= 10  &&  b <= 710  &&  c >= 10  &&  c <= 710)
			{
				pDC -> MoveTo (a + 9, c);
				pDC -> LineTo (a + 10, b);
			}

			c = b;
		}
	}
}

void CP31View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)
{
	d++;
	Invalidate ();
	CView::OnChar (nChar, nRepCnt, nFlags);
}
Изображения
Тип файла: png Image 3a.png (45.5 Кб, 0 просмотров)
Тип файла: png Image 4a.png (29.6 Кб, 0 просмотров)
Тип файла: png Image 5a.png (39.1 Кб, 0 просмотров)
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 13.01.2024, 15:57   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Я описался от восторга!
waleri вне форума Ответить с цитированием
Старый 14.01.2024, 06:34   #3
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 973
По умолчанию

jura_k, за 20 лет - вот это? Нуу, надо ускоряться. Надо :D

столько ещё предстоит изучить!

Цитата:
Сообщение от jura_k Посмотреть сообщение
Теперь я умею рисовать в Windows
а тут ты просто узнал некоторые (из тысячи) функций MFC::CDC (WINAPI::HDC).

И студию по меньшей мере 2022 уже поставь. Над шестёркой даже старперы уже смеются

Последний раз редактировалось Алексей1153; 14.01.2024 в 06:37.
Алексей1153 вне форума Ответить с цитированием
Старый 14.01.2024, 09:40   #4
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Не нашел учебник, где это описано. Пришлось изобретать самому. И догадываться, что это такое.
Там же ведь объекты?
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 14.01.2024, 09:42   #5
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
И студию по меньшей мере 2022 уже поставь. Над шестёркой даже старперы уже смеются
А там какие системные требования к компьютерному железу? А к операционной системе?
А там есть программирование под 64-битную Windows?
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 14.01.2024, 09:44   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
А там какие системные требования к компьютерному железу? А к операционной системе?
10ка и выше

Цитата:
Сообщение от jura_k Посмотреть сообщение
А там есть программирование под 64-битную Windows?
В наше вермя надо спрашивать - осталось ли там программирование под 32х битные windows?.. Проснитесь, 2024 на дворе.
p51x вне форума Ответить с цитированием
Старый 14.01.2024, 10:25   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 973
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
Не нашел учебник, где это описано
в интернете можно найти за пару секунд
для MFC https://learn.microsoft.com/en-us/cp...?view=msvc-170
для WINAPI https://learn.microsoft.com/en-us/wi...text-functions

Цитата:
Сообщение от jura_k Посмотреть сообщение
А там есть программирование под 64-битную Windows?
там всё есть

требования к компу - приличные. Комп для программиста тоже должен быть не рухлядь, иначе всё будет очень долго изучаться
Алексей1153 вне форума Ответить с цитированием
Старый 14.01.2024, 19:08   #8
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,529
По умолчанию

Вот это тот самый Help, которого у меня не было. Меня не учили программированию с 1996-го года.
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума Ответить с цитированием
Старый 19.01.2024, 20:39   #9
ugo
Новичок
Джуниор
 
Регистрация: 19.01.2024
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
И студию по меньшей мере 2022 уже поставь. Над шестёркой даже старперы уже смеются
Я программирую с помощью инструментов т.к. Tasm, Borland и Visual Studio (версии 6.0) выпущеными в прошлом веке. Делаю программы под Dos и Windows. Меня всё устраивает, переходить на монстро-образное не собираюсь. Вдобавок, переходить нужно на лицензионное, а по другом, вы - ботнет (с торрентов)!
ugo вне форума Ответить с цитированием
Старый 19.01.2024, 20:57   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

ugo, надеюсь вы это делаете MS-DOS...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование 2D графики Жданович Павел Visual C++ 6 10.03.2012 06:26
программирование 3D графики serj-07 Помощь студентам 1 16.12.2011 19:19
Программирование графики beztrud Мультимедиа в Delphi 3 13.02.2009 14:14
Программирование графики sasha465 Общие вопросы C/C++ 5 10.10.2008 15:48