diff options
| author | Andrew Guschin <saintruler@gmail.com> | 2020-11-09 23:28:49 +0300 |
|---|---|---|
| committer | Andrew Guschin <saintruler@gmail.com> | 2020-11-09 23:28:49 +0300 |
| commit | 0408d33694635cdc28db23c9c6388bd916626bde (patch) | |
| tree | 843f2e61b8f5652ff3b2f19779820c223403ca7d /task02/Guschin/MyForm.h | |
Добавил первые 4 задания
Diffstat (limited to 'task02/Guschin/MyForm.h')
| -rw-r--r-- | task02/Guschin/MyForm.h | 366 |
1 files changed, 366 insertions, 0 deletions
diff --git a/task02/Guschin/MyForm.h b/task02/Guschin/MyForm.h new file mode 100644 index 0000000..f195cd7 --- /dev/null +++ b/task02/Guschin/MyForm.h @@ -0,0 +1,366 @@ +#pragma once + +namespace Guschin { + + using namespace System; + using namespace System::ComponentModel; + using namespace System::Collections; + using namespace System::Windows::Forms; + using namespace System::Data; + using namespace System::Drawing; + + // 20 x 30 + + float clown[] = { + // + 8.f, 29.f, 12.f, 29.f, + 12.f, 29.f, 13.f, 28.f, + 13.f, 28.f, 14.f, 26.f, + 14.f, 26.f, 13.f, 24.f, + 13.f, 24.f, 15.f, 23.f, + 15.f, 23.f, 15.f, 22.f, + 15.f, 22.f, 14.f, 21.f, + 14.f, 21.f, 12.f, 22.f, + 12.f, 22.f, 8.f, 22.f, + 8.f, 22.f, 6.f, 21.f, + 6.f, 21.f, 5.f, 22.f, + 5.f, 22.f, 5.f, 23.f, + 5.f, 23.f, 7.f, 24.f, + 7.f, 24.f, 6.f, 26.f, + 6.f, 26.f, 7.f, 28.f, + 7.f, 28.f, 8.f, 29.f, + + 14.f, 26.f, 15.f, 26.f, + 15.f, 26.f, 16.f, 27.f, + 16.f, 27.f, 16.f, 26.f, + 16.f, 26.f, 17.f, 25.f, + 17.f, 25.f, 16.f, 25.f, + 16.f, 25.f, 15.f, 24.f, + 15.f, 24.f, 15.f, 25.f, + 15.f, 25.f, 14.f, 26.f, + + 15.f, 25.f, 15.f, 26.f, + 15.f, 26.f, 16.f, 26.f, + 16.f, 26.f, 16.f, 25.f, + 16.f, 25.f, 15.f, 25.f, + 15.f, 25.f, 12.f, 23.f, + + // + 15.f, 22.f, 19.f, 17.f, + 19.f, 17.f, 19.f, 15.f, + 19.f, 15.f, 18.f, 16.f, + 18.f, 16.f, 19.f, 14.f, + 19.f, 14.f, 18.f, 13.f, + 18.f, 13.f, 17.f, 15.f, + 17.f, 15.f, 18.f, 12.f, + 18.f, 12.f, 16.f, 10.f, + 16.f, 10.f, 15.f, 8.f, + 15.f, 8.f, 11.f, 6.f, + 11.f, 6.f, 9.f, 6.f, + 9.f, 6.f, 5.f, 8.f, + 5.f, 8.f, 4.f, 10.f, + 4.f, 10.f, 2.f, 12.f, + 2.f, 12.f, 3.f, 15.f, + 3.f, 15.f, 2.f, 13.f, + 2.f, 13.f, 1.f, 14.f, + 1.f, 14.f, 2.f, 16.f, + 2.f, 16.f, 1.f, 15.f, + 1.f, 15.f, 1.f, 17.f, + 1.f, 17.f, 5.f, 22.f, + + // + 7.f, 16.f, 5.f, 17.f, + 5.f, 17.f, 5.f, 19.f, + 5.f, 19.f, 7.f, 21.f, + 7.f, 21.f, 9.f, 21.f, + 9.f, 21.f, 10.f, 18.5f, + 10.f, 18.5f, 9.f, 16.f, + 9.f, 16.f, 7.f, 16.f, + 7.f, 16.f, 6.f, 17.f, + 6.f, 17.f, 7.f, 19.f, + 7.f, 19.f, 8.f, 19.f, + 8.f, 19.f, 9.f, 17.f, + 9.f, 17.f, 8.f, 16.f, + 8.f, 16.f, 8.f, 17.f, + 8.f, 17.f, 7.f, 17.f, + 7.f, 17.f, 7.f, 16.f, + + 13.f, 16.f, 15.f, 17.f, + 15.f, 17.f, 15.f, 19.f, + 15.f, 19.f, 13.f, 21.f, + 13.f, 21.f, 11.f, 21.f, + 11.f, 21.f, 10.f, 18.5f, + 10.f, 18.5f, 11.f, 16.f, + 11.f, 16.f, 13.f, 16.f, + 13.f, 16.f, 14.f, 17.f, + 14.f, 17.f, 13.f, 19.f, + 13.f, 19.f, 12.f, 19.f, + 12.f, 19.f, 11.f, 17.f, + 11.f, 17.f, 12.f, 16.f, + 12.f, 16.f, 12.f, 17.f, + 12.f, 17.f, 13.f, 17.f, + 13.f, 17.f, 13.f, 16.f, + + // + 9.f, 16.f, 11.f, 16.f, + 11.f, 16.f, 13.f, 15.f, + 13.f, 15.f, 14.f, 13.f, + 14.f, 13.f, 13.f, 12.f, + 13.f, 12.f, 10.f, 11.f, + 9.f, 16.f, 7.f, 15.f, + 7.f, 15.f, 6.f, 13.f, + 6.f, 13.f, 7.f, 12.f, + 7.f, 12.f, 10.f, 11.f, + + // + 14.f, 13.f, 15.f, 13.f, + 15.f, 13.f, 16.f, 12.f, + 16.f, 12.f, 16.f, 11.f, + 16.f, 11.f, 13.f, 9.f, + 13.f, 9.f, 10.f, 8.f, + 6.f, 13.f, 5.f, 13.f, + 5.f, 13.f, 4.f, 12.f, + 4.f, 12.f, 4.f, 11.f, + 4.f, 11.f, 7.f, 9.f, + 7.f, 9.f, 10.f, 8.f, + + // + 14.f, 12.f, 15.f, 11.f, + 14.f, 11.f, 13.f, 10.f, + 13.f, 10.f, 10.f, 9.f, + 6.f, 12.f, 5.f, 11.f, + 6.f, 11.f, 7.f, 10.f, + 7.f, 10.f, 10.f, 9.f, + + // + 15.f, 17.f, 16.f, 15.f, + 16.f, 15.f, 16.f, 10.f, + 5.f, 17.f, 4.f, 15.f, + 4.f, 15.f, 4.f, 10.f, + + // + 10.f, 5.f, 14.f, 1.f, + 14.f, 1.f, 14.f, 7.f, + 14.f, 7.f, 10.f, 3.f, + + 12.f, 5.f, 13.f, 5.f, + 13.f, 5.f, 13.f, 4.f, + 13.f, 4.f, 12.f, 4.f, + 12.f, 4.f, 12.f, 5.f, + + 13.f, 6.f, 14.f, 5.f, + + 14.f, 4.f, 13.f, 3.f, + 13.f, 3.f, 14.f, 2.f, + + // + 10.f, 3.f, 6.f, 7.f, + 6.f, 7.f, 6.f, 1.f, + 6.f, 1.f, 10.f, 5.f, + + 8.f, 3.f, 7.f, 3.f, + 7.f, 3.f, 7.f, 4.f, + 7.f, 4.f, 8.f, 4.f, + 8.f, 4.f, 8.f, 3.f, + + 7.f, 2.f, 6.f, 3.f, + + 6.f, 4.f, 7.f, 5.f, + 7.f, 5.f, 6.f, 6.f, + }; + unsigned int clownSize = sizeof(clown) / sizeof(float); + float clownVx = 20.f; + float clownVy = 30.f; + + float rabbit[] = { + // голова + 0.5f,3.f,1.f,4.5f, // от левой щеки вверх до уха + 1.f,4.5f,0.5f,6.f, // левое ухо слева снизу вверх + 0.5f,6.f,0.5f, 7.5f,// левое ухо слева + 0.5f, 7.5f,1.f,8.f,// левое ухо верх слева + 1.f,8.f,1.5f,8.f,// левое ухо верх середина + 1.5f,8.f,2.f,7.5f,// левое ухо верх справа + 2.f,7.5f,1.5f, 6.f,// левое ухо справа сверху вниз + 1.5f, 6.f,1.5f,4.5f,// левое ухо справа до макушки + 1.5f,4.5f,3.f,4.5f,// макушка + 3.f,4.5f,3.f,6.f,// правое ухо слева снизу вверх + 3.f,6.f,2.5f,7.5f,// правое ухо слева + 2.5f,7.5f,3.f,8.f,// правое ухо верх слева + 3.f,8.f,3.5f,8.f,// правое ухо верх середина + 3.5f,8.f,4.f,7.5f,// правое ухо верх справа + 4.f,7.5f,4.f,6.f,// правое ухо сверху вниз + 4.f,6.f,3.5f,4.5f,// правое ухо справа + 3.5f,4.5f,4.f,3.f,// от правого уха вниз до щеки + 4.f,3.f,3.5f,1.5f,// правая скула + 3.5f,1.5f,2.5f,1.f,// подбородок справа + 2.5f,1.f,2.f,1.f,// подбородок снизу + 2.f,1.f,1.f,1.5f,// подбородок слева + 1.f,1.5f,0.5f,3.f,// левая скула + // туловище + 4.f,3.f,5.5f,3.5f,// спина от головы вправо + 5.5f,3.5f,7.f,3.5f,// спина верх + 7.f,3.5f,7.5f,2.5f,// спина сверху до хвоста + 7.5f,2.5f,8.f,2.5f,// хвост сверху + 8.f,2.5f,8.f,2.f,// хвост справа + 8.f,2.f,7.5f,2.f,// хвост низ справа налево + 7.5f,2.f,7.5f,0.5f,// задняя нога справа сверху вниз + 7.5f,0.5f,6.5f,0.5f,// задняя нога низ + 6.5f,0.5f,6.5f,1.f,// задняя нога слева + 6.5f,1.f,6.f,1.f,// между задних ног + 6.f,1.f,6.f,0.5f,// левая задняя нога справа + 6.f,0.5f,5.f,0.5f,// левая задняя нога низ + 5.f,0.5f,5.f,1.f,// левая задняя нога слева + 5.f,1.f,4.f,1.f,// между задними и передними ногами + 4.f,1.f,4.f,0.5f,// правая передняя нога справа + 4.f,0.5f,3.f,0.5f,// правая передняя нога низ + 3.f,0.5f,3.f,1.f,// правая передняя нога слева + 3.f,1.f,2.5f,1.f,// между передних ног + 2.5f,1.f,2.5f,0.5f,// передняя нога справа + 2.5f,0.5f,1.5f,0.5f,// передняя нога низ + 1.5f,0.5f,1.5f,1.25f,// передняя нога слева + // левый глаз + 1.5f,3.5f,1.5f,3.f,// левый глаз слева сверху вниз + 1.5f,3.f,2.f,3.f,// левый глаз низ + 2.f, 3.f,2.f,3.5f,// левый глаз справа + 2.f,3.5f,1.5f,3.5f,// левый глаз верх + // правый глаз + 2.5f,3.5f,2.5f,3.f,// правый глаз слева + 2.5f,3.f,3.f, 3.f,// правый глаз снизу + 3.f,3.f,3.f,3.5f,// правый глаз справа + 3.f,3.5f,2.5f,3.5f,// правый глаз сверху + // ушные раковины + 1.f,5.5f,1.f,7.f,// левая ушная раковина + 3.5f,5.5f,3.5f,7.f,// правая ушная раковина + // нос + 2.f,2.5f,2.5f,2.5f,// нос сверху + 2.5f,2.5f,2.25f,2.f,// нос справа + 2.25f,2.f,2.f,2.5f// нос слева + }; + unsigned int rabbitSize = sizeof(rabbit) / sizeof(float); + float rabbitVx = 8.5f; + float rabbitVy = 8.5f; + + /// <summary> + /// Ñâîäêà äëÿ MyForm + /// </summary> + public ref class MyForm : public System::Windows::Forms::Form + { + public: + MyForm(void) + { + InitializeComponent(); + // + //TODO: äîáàâüòå êîä êîíñòðóêòîðà + // + } + + protected: + /// <summary> + /// Îñâîáîäèòü âñå èñïîëüçóåìûå ðåñóðñû. + /// </summary> + ~MyForm() + { + if (components) + { + delete components; + } + } + + private: + /// <summary> + /// Îáÿçàòåëüíàÿ ïåðåìåííàÿ êîíñòðóêòîðà. + /// </summary> + System::ComponentModel::Container ^components; + +#pragma region Windows Form Designer generated code + /// <summary> + /// Òðåáóåìûé ìåòîä äëÿ ïîääåðæêè êîíñòðóêòîðà — íå èçìåíÿéòå + /// ñîäåðæèìîå ýòîãî ìåòîäà ñ ïîìîùüþ ðåäàêòîðà êîäà. + /// </summary> + void InitializeComponent(void) + { + this->SuspendLayout(); + // + // MyForm + // + this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); + this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; + this->ClientSize = System::Drawing::Size(553, 557); + this->Name = L"MyForm"; + this->Text = L"MyForm"; + this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load); + this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &MyForm::MyForm_Paint); + this->KeyDown += gcnew System::Windows::Forms::KeyEventHandler(this, &MyForm::MyForm_KeyDown); + this->Resize += gcnew System::EventHandler(this, &MyForm::MyForm_Resize); + this->ResumeLayout(false); + + } +#pragma endregion + private: bool keepAspectRatio; + private: bool showClown; + private: float* lines = clown; + private: unsigned int arrayLength = clownSize; + private: float Vx = clownVx; + private: float Vy = clownVy; + + private: System::Void MyForm_Resize(System::Object^ sender, System::EventArgs^ e) { + Refresh(); + } + private: System::Void MyForm_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { + Graphics^ g = e->Graphics; + Pen^ blackPen = gcnew Pen(Color::Black, 2); + + float Wx = ClientRectangle.Width; + float Wy = ClientRectangle.Height; + + float aspectFig = Vx / Vy; + float aspectForm = Wx / Wy; + + float Sx, Sy; + if (keepAspectRatio) { + Sx = Sy = aspectFig < aspectForm ? Wy / Vy : Wx / Vx; + } + else { + Sx = Wx / Vx; + Sy = Wy / Vy; + } + + float Ty = Sy * Vy; + + for (int i = 0; i < arrayLength; i += 4) { + g->DrawLine(blackPen, Sx * lines[i], Ty - Sy * lines[i + 1], + Sx * lines[i + 2], Ty - Sy * lines[i + 3]); + } + } + private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) { + keepAspectRatio = true; + } + private: System::Void MyForm_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) { + switch (e->KeyCode) { + case Keys::M : + keepAspectRatio = !keepAspectRatio; + break; + case Keys::N : + if (showClown) + { + lines = rabbit; + arrayLength = rabbitSize; + Vx = rabbitVx; + Vy = rabbitVy; + } + else + { + lines = clown; + arrayLength = clownSize; + Vx = clownVx; + Vy = clownVy; + } + showClown = !showClown; + break; + default: + break; + } + Refresh(); + } + }; +} |