summaryrefslogtreecommitdiff
path: root/task02/Guschin/MyForm.h
diff options
context:
space:
mode:
Diffstat (limited to 'task02/Guschin/MyForm.h')
-rw-r--r--task02/Guschin/MyForm.h366
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();
+ }
+ };
+}