Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт Герман.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
8.21 Mб
Скачать

Индивидуальное задание. Создание анимации

Цель: Научиться создавать анимации при помощи WinApi.

Краткие теоретические сведения: Для выполнения данного индивидульного задания необходимо использовать навыки, приобретенные при выполнении предыдущих заданий.

Задание. Необходимо создать следующую анимацию:

В лесу танцует избушка на курьих ножках. По нажатию клавиши пробел в окошке появляется баба Яга и затем вылетает из него.

Анализ реализации алгоритма:

Для начала я выбрала подходящий фон. Затем выбрала подходящее изображение избушки и создала его зеркальное отображение, чтобы затем показать танец, меняя эти изображения. Используя приложение Paint, я нарисовала бабу Ягу в окне избушки. Затем, указав начальное положение бабы Яги в окошке, и после этого меняя ее положение, я изобразила вылет бабы Яги из окошка.

Исходный код:

case WM_KEYDOWN:

switch (wParam){

case VK_SPACE:

run = false;

break;

}

break;

case WM_PAINT:

GetClientRect(hWnd, &rect);

hdc = BeginPaint(hWnd, &ps);

hdc2 = CreateCompatibleDC(hdc);

SelectObject(hdc2, hFon);

StretchBlt(hdc, 0, 0, rect.right, rect.bottom, hdc2, 0, 0, fon.bmWidth, fon.bmHeight, SRCCOPY);

DeleteDC(hdc2);

hdc2 = CreateCompatibleDC(hdc);

if (tick%20>=0 && tick%20<10 && dance){

SelectObject(hdc2, hHouse1);

TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house1.bmHeight, RGB(255,255,255));}

else if (tick%20>=10 && dance){

SelectObject(hdc2, hHouse);

TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house.bmWidth, house.bmHeight, RGB(255,255,255));}

else if (!dance && tick<=30){

SelectObject(hdc2, hHouse1);

TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house1.bmHeight, RGB(255,255,255));}

else if (!dance && tick>30 && tick<71){

SelectObject(hdc2, hHouse2);

TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house2.bmHeight, RGB(255,255,255));}

else if (!dance && go){

SelectObject(hdc2, hHouse1);

TransparentBlt(hdc, rect.right/3, rect.bottom/4, rect.right/3,rect.bottom*2/3, hdc2, 0, 0,house1.bmWidth, house1.bmHeight, RGB(255,255,255));}

DeleteDC(hdc2);

if (go){

hdc2 = CreateCompatibleDC(hdc);

SelectObject(hdc2, hLady);

TransparentBlt( hdc, pos1.x, pos1.y, rect.right/5,rect.bottom/3, hdc2, 0, 0,lady.bmWidth, lady.bmHeight, RGB(255,255,255));

DeleteDC(hdc2);

}

EndPaint(hWnd, &ps);

break;

Скриншоты реализации можно просмотреть в приложении 2.

Выводы: Использовав навыки, приобретенные при выполнении предыдущих заданий, я создала анимацию при помощи WinApi.

С#

Лабораторная работа №1. Простейшее приложение Windows Forms

Цель: Изучить способы работы с текстовыми файлами в C#. Рассмотреть создание диаграмм, меню, диалоговых окон средствами C#.

Краткие теоретические сведения:

Класс Form представляет собой заготовку формы, от которой наследуются классы форм приложения. Помимо множества унаследованных элементов, в этом классе определено большое количество собственных элементов. В библиотеке .NET нет специального класса для представления диалоговых окон. Вместо этого устанавливаются определенные значения свойств в классе обычной формы. В диалоговом окне можно располагать те же элементы управления, что и на обычной форме. Для вывода линий, геометрических фигур, текста и изображений необходимо создатьэкземпляр класса Graphics, описанного в пространстве имен System.Drawing.

Задание:Разработайте приложение Windows Forms при помощи MS Visual Studio C#.

При реализации интерфейса следуйте рекомендациям стандарта CUI (Common User Interface).

Программа должна иметь главное меню, строку состояния и клиентскую область (область рисования).

Главное меню приложения обязательно должно содержать следующие команды (в формате Подменю/Команда):

    • File/Open - выбор файла

    • File/Quit - завершение приложения после подтверждения пользователя

    • Help/About - вывод диалогового окна которое печатает условие задачи и информацию о разработчике (ФИО студента, группа, курс, факультет, ВУЗ)

    • (команды) - команды необходимые для решения вашей задачи, например, View/Fonts для выбора шрифта, View/Colors для настройки цвета и т.п.

Постройте диаграмму опроса в сети отображающую процентное соотношение проголосовавших.

Входные данные хранятся в текстовом файле. Первая строка файла содержит наименование опроса. Каждая последующая строка файла содержит количество проголосовавших, затем, через пробел и до конца строки текст, соответствующий опции опроса.

Для выбора файла входных данных использовать стандартный диалог.

Анализ реализации алгоритма:

Для создания макета диалогового окна я использовала панель элементов. Используя специальные классы C#, такие как openFileDialog, обеспечила взаимодействие приложения и файловой системы, тем самым предоставляя пользователю возможность указать файл с исходными данными.

Исходный код:

private void ReadData()

{

ClearValues();

using (StreamReader SourceFile = new StreamReader(FileName, System.Text.Encoding.GetEncoding(1251)))

{

string Temp;

NameOfPoll = SourceFile.ReadLine();

int Sum = 0;

while (!SourceFile.EndOfStream)

{

Temp = SourceFile.ReadLine();

int index = Temp.IndexOf(' ');

string StrNum = Temp.Substring(0, index);

Sum += Int32.Parse(StrNum);

CountsOfPoll.Add(Int32.Parse(StrNum));

ModelsOfPoll.Add(Temp.Substring(index + 1));

}

int SumPercents = 0;

for (int i = 0; i < CountsOfPoll.Count - 1; i++)

{

PercentsOfPoll.Add((int)Math.Round(100 * (double)CountsOfPoll[i] / Sum));

SumPercents += PercentsOfPoll[i];

}

PercentsOfPoll.Add(100 - SumPercents);

this.Text = NameOfPoll;

}

}

private void FillDiagram()

{

chart1.Series.Clear();

Series series = new Series();

series.ChartType = SeriesChartType.Pie;

chart1.Series.Add(series);

chart1.Series[0].Points.DataBindXY(ModelsOfPoll, PercentsOfPoll);

chart1.Series[0].IsValueShownAsLabel = true;

}

Результат работы программы можно увидеть в приложении 3.

Выводы: Я изучила способы работы с текстовыми файлами в C#. Рассмотрела создание диаграмм, меню, диалоговых окон средствами C#.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]