Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.22 KB | None | 0 0
  1. #pragma once
  2.  
  3. namespace Martyshin {
  4.  
  5. using namespace System;
  6. using namespace System::ComponentModel;
  7. using namespace System::Collections;
  8. using namespace System::Windows::Forms;
  9. using namespace System::Data;
  10. using namespace System::Drawing;
  11.  
  12.  
  13.  
  14.  
  15.  
  16. float lines[] =
  17. {
  18. //шляпа
  19. 7.f,1.f,11.f,1.f,
  20. 11.f,1.f,12.f,3.f,
  21. 6.f,3.f,7.f,1.f,
  22. 6.f,3.f,4.f,3.f,
  23. 4.f,3.f,4.f,4.f,
  24. 4.f,4.f,14.f,4.f,
  25. 14.f,4.f,14.f,3.f,
  26. 14.f,3.f,4.f,3.f,
  27. //лицо
  28. 4.f,4.f,2.f,6.f,
  29. 2.f,6.f,3.f,6.f,
  30. 3.f,6.f,1.f,8.f,
  31. 1.f,8.f, 3.f,8.f,
  32. 3.f,8.f,2.f,10.f,
  33. 2.f,10.f,4.f,9.f,
  34. 4.f,9.f,4.f,11.f,
  35. 4.f,11.f,5.f,10.f,
  36. 5.f,10.f,8.f,12.f,
  37. 8.f,12.f,10.f,12.f,
  38. 10.f,12.f,13.f,10.f,
  39. 13.f,10.f,14.f,11.f,
  40. 14.f,11.f,14.f,9.f,
  41. 14.f,9.f,16.f,10.f,
  42. 16.f,10.f,15.f,8.f,
  43. 15.f,8.f,17.f,8.f,
  44. 17.f,8.f,15.f,6.f,
  45. 15.f,6.f,16.f,6.f,
  46. 16.f,6.f,14.f,4.f,
  47. 5.f,4.f,5.f,10.f,
  48. 13.f,4.f,13.f,10.f,
  49. //левый глаз
  50. 7.f,4.f,6.f,5.f,
  51. 6.f,5.f,6.f,7.f,
  52. 6.f,7.f,8.f,7.f,
  53. 8.f,7.f,8.f,5.f,
  54. 8.f,5.f,7.f,4.f,
  55.  
  56. 7.f,5.f,6.f,7.f,
  57. 7.f,5.f,8.f,7.f,
  58.  
  59. 7.f,6.f,6.5f,7.f,
  60. 7.f,6.f,7.5f,7.f,
  61.  
  62. //правый глаз
  63. 11.f,4.f,10.f,5.f,
  64. 10.f,5.f,10.f,7.f,
  65. 10.f,7.f,12.f,7.f,
  66. 12.f,7.f,12.f,5.f,
  67. 12.f,5.f,11.f,4.f,
  68.  
  69. 11.f,5.f,10.f,7.f,
  70. 11.f,5.f,12.f,7.f,
  71.  
  72. 11.f,6.f,10.5f,7.f,
  73. 11.f,6.f,11.5f,7.f,
  74.  
  75. //нос рот
  76. 8.f,7.f,7.f,7.5f,
  77. 7.f,7.5f,7.f,8.5f,
  78. 7.f,8.5f,6.f,8.f,
  79. 6.f,8.f,6.f,10.f,
  80. 6.f,10.f,9.f,11.f,
  81. 9.f,11.f,12.f,10.f,
  82. 12.f,10.f,12.f,8.f,
  83. 12.f,8.f,11.f,8.5f,
  84. 11.f,8.5f,11.f,7.5f,
  85. 11.f,7.5f,10.f,7.f,
  86. 10.f,7.f,8.f,7.f,
  87.  
  88. 7.f,8.5f,8.f,9.f,
  89. 8.f,9.f,10.f,9.f,
  90. 10.f,9.f,11.f,8.5f,
  91.  
  92. //улыбка
  93. 7.f,9.f,8.f,10.f,
  94. 8.f,10.f,10.f,10.f,
  95. 10.f,10.f,11.f,9.f,
  96.  
  97. //туловище
  98. 8.f,12.f,5.f,13.f,
  99. 5.f,13.f,5.f,21.f,
  100. 5.f,21.f,13.f,21.f,
  101. 13.f,21.f,13.f,13.f,
  102. 13.f,13.f,10.f,12.f,
  103.  
  104. //галстук
  105. 8.f,12.f,7.f,13.f,
  106. 7.f,13.f,8.f,14.f,
  107. 8.f,14.f,7.f,18.f,
  108. 7.f,18.f,9.f,20.f,
  109. 9.f,20.f,11.f,18.f,
  110. 11.f,18.f,10.f,14.f,
  111. 10.f,14.f,11.f,13.f,
  112. 11.f,13.f,10.f,12.f,
  113.  
  114. 9.f,12.f,8.f,13.f,
  115. 8.f,13.f,9.f,14.f,
  116. 9.f,14.f,10.f,13.f,
  117. 10.f,13.f,9.f,12.f,
  118.  
  119. 8.f,14.f,10.f,14.f,
  120.  
  121. 9.f,20.f,9.f,21.f,
  122. //Узоры на рубашке
  123. 6.f,14.f,6.f,15.f,
  124. 6.f,15.f,5.f,15.f,
  125. 5.f,15.f,5.f,16.f,
  126. 5.f,16.f,6.f,16.f,
  127. 6.f,16.f,6.f,17.f,
  128. 6.f,17.f,7.f,17.f,
  129. 7.f,17.f,7.f,16.f,
  130. 7.f,16.f,7.5f,16.f,
  131. 7.8f,15.f,7.f,15.f,
  132. 7.f,15.f,7.f,14.f,
  133. 7.f,14.f,6.f,14.f,
  134.  
  135. 11.f,17.f,11.f,18.f,
  136. 10.1f,19.f,11.f,19.f,
  137. 11.f,19.f,11.f,20.f,
  138. 11.f,20.f,12.f,20.f,
  139. 12.f,20.f,12.f,19.f,
  140. 12.f,19.f,13.f,19.f,
  141. 13.f,18.f,12.f,18.f,
  142. 12.f,18.f,12.f,17.f,
  143. 12.f,17.f,11.f,17.f,
  144.  
  145. //левая рука
  146. 5.f,13.f,2.f,21.f,
  147. 2.f,21.f,2.f,23.f,
  148. 2.f,23.f,4.f,23.f,
  149. 4.f,23.f,4.f,22.f,
  150. 4.f,22.f,5.f,22.f,
  151. 5.f,22.f,5.f,21.f,
  152. 5.f,21.f,2.f,21.f,
  153.  
  154. 2.4f, 20.f,3.f,20.f,
  155. 3.f,20.f,3.f,19.f,
  156. 3.f,19.f,4.f,19.f,
  157. 4.f,19.f,4.f,20.f,
  158. 4.f,20.f,5.f,20.f,
  159.  
  160. //правая рука
  161. 13.f,13.f,16.f,21.f,
  162. 16.f,21.f,16.f,23.f,
  163. 16.f,23.f,14.f,23.f,
  164. 14.f,23.f,14.f,22.f,
  165. 14.f,22.f,13.f,22.f,
  166. 13.f,22.f,13.f,21.f,
  167. 13.f,21.f,16.f,21.f,
  168.  
  169. 13.f,20.f,14.f,20.f,
  170. 14.f,20.f,14.f,19.f,
  171. 14.f,19.f,15.f,19.f,
  172. 15.f,19.f,15.f,20.f,
  173. 15.f,20.f,15.6f,20.f,
  174.  
  175. //левая нога
  176. 5.f,21.f,6.f,27.f,
  177. 6.f,27.f,9.f,27.f,
  178. 9.f,27.f,9.f,21.f,
  179.  
  180. //узоры
  181. 7.f,22.f,6.f,23.f,
  182. 6.f,23.f,7.f,24.f,
  183. 7.f,24.f,8.f,23.f,
  184. 8.f,23.f,7.f,22.f,
  185.  
  186. 7.f,26.f,6.f,27.f,
  187. 7.f,26.f,8.f,27.f,
  188.  
  189. //правая нога
  190. 13.f,21.f,12.f,27.f,
  191. 12.f,27.f,9.f,27.f,
  192.  
  193. //узоры
  194. 11.f,22.f,10.f,21.f,
  195. 11.f,22.f,12.f,21.f,
  196.  
  197. 11.f,24.f,10.f,25.f,
  198. 10.f,25.f,11.f,26.f,
  199. 11.f,26.f,12.f,25.f,
  200. 12.f,25.f,11.f,24.f,
  201.  
  202. //лапы)
  203.  
  204. 9.f,27.f,5.f,27.f,
  205. 5.f,27.f,2.f,29.f,
  206. 2.f,29.f,17.f,29.f,
  207. 17.f,29.f,14.f,27.f,
  208. 14.f,27.f,9.f,27.f,
  209. 9.f,27.f,9.f,29.f,
  210. };
  211.  
  212. unsigned int arrayLength = sizeof(lines) / sizeof(float); // длина массива
  213. float Vx = 31.f; // размер рисунка по горизонтали
  214. float Vy = 31.f; // размер рисунка по вертикали
  215. float aspectFig = Vx / Vy; // соотношение сторон рисунка
  216.  
  217. /// <summary>
  218. /// Сводка для MyForm
  219. /// </summary>
  220. public ref class MyForm : public System::Windows::Forms::Form
  221. {
  222. public:
  223. MyForm(void)
  224. {
  225. InitializeComponent();
  226. //
  227. //TODO: добавьте код конструктора
  228. //
  229. }
  230.  
  231. protected:
  232. /// <summary>
  233. /// Освободить все используемые ресурсы.
  234. /// </summary>
  235. ~MyForm()
  236. {
  237. if (components)
  238. {
  239. delete components;
  240. }
  241. }
  242.  
  243. private:
  244. /// <summary>
  245. /// Обязательная переменная конструктора.
  246. /// </summary>
  247. System::ComponentModel::Container ^components;
  248.  
  249. #pragma region Windows Form Designer generated code
  250. /// <summary>
  251. /// Требуемый метод для поддержки конструктора — не изменяйте
  252. /// содержимое этого метода с помощью редактора кода.
  253. /// </summary>
  254. void InitializeComponent(void)
  255. {
  256. this->SuspendLayout();
  257. //
  258. // MyForm
  259. //
  260. this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
  261. this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
  262. this->ClientSize = System::Drawing::Size(284, 261);
  263. this->DoubleBuffered = true;
  264. this->Name = L"MyForm";
  265. this->Text = L"MyForm";
  266. this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
  267. this->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &MyForm::MyForm_Paint);
  268. this->KeyDown += gcnew System::Windows::Forms::KeyEventHandler(this, &MyForm::MyForm_KeyDown);
  269. this->Resize += gcnew System::EventHandler(this, &MyForm::MyForm_Resize_1);
  270. this->ResumeLayout(false);
  271.  
  272. }
  273. #pragma endregion
  274. private: bool keepAspectRatio; // значение - сохранять ли соотношение сторон рисунка?
  275. private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
  276. keepAspectRatio = true; // начальное значение: сохранять соотношение сторон рисунка
  277. }
  278.  
  279. //float lines[] = {
  280. // // голова
  281. // 0.5f,3.f,1.f,4.5f, // от левой щеки вверх до уха
  282. // 1.f,4.5f,0.5f,6.f, // левое ухо слева снизу вверх
  283. // 0.5f,6.f,0.5f, 7.5f, // левое ухо слева
  284. // 0.5f, 7.5f,1.f,8.f, // левое ухо верх слева
  285. // 1.f,8.f,1.5f,8.f, // левое ухо верх середина
  286. // 1.5f,8.f,2.f,7.5f, // левое ухо верх справа
  287. // 2.f,7.5f,1.5f, 6.f, // левое ухо справа сверху вниз
  288. // 1.5f, 6.f,1.5f,4.5f, // левое ухо справа до макушки
  289. // 1.5f,4.5f,3.f,4.5f, // макушка
  290. // 3.f,4.5f,3.f,6.f, // правое ухо слева снизу вверх
  291. // 3.f,6.f,2.5f,7.5f, // правое ухо слева
  292. // 2.5f,7.5f,3.f,8.f, // правое ухо верх слева
  293. // 3.f,8.f,3.5f,8.f, // правое ухо верх середина
  294. // 3.5f,8.f,4.f,7.5f, // правое ухо верх справа
  295. // 4.f,7.5f,4.f,6.f, // правое ухо сверху вниз
  296. // 4.f,6.f,3.5f,4.5f, // правое ухо справа
  297. // 3.5f,4.5f,4.f,3.f, // от правого уха вниз до щеки
  298. // 4.f,3.f,3.5f,1.5f, // правая скула
  299. // 3.5f,1.5f,2.5f,1.f, // подбородок справа
  300. // 2.5f,1.f,2.f,1.f, // подбородок снизу
  301. // 2.f,1.f,1.f,1.5f, // подбородок слева
  302. // 1.f,1.5f,0.5f,3.f, // левая скула
  303. // // туловище
  304. // 4.f,3.f,5.5f,3.5f, // спина от головы вправо
  305. // 5.5f,3.5f,7.f,3.5f, // спина верх
  306. // 7.f,3.5f,7.5f,2.5f, // спина сверху до хвоста
  307. // 7.5f,2.5f,8.f,2.5f, // хвост сверху
  308. // 8.f,2.5f,8.f,2.f, // хвост справа
  309. // 8.f,2.f,7.5f,2.f, // хвост низ справа налево
  310. // 7.5f,2.f,7.5f,0.5f, // задняя нога справа сверху вниз
  311. // 7.5f,0.5f,6.5f,0.5f, // задняя нога низ
  312. // 6.5f,0.5f,6.5f,1.f, // задняя нога слева
  313. // 6.5f,1.f,6.f,1.f, // между задних ног
  314. // 6.f,1.f,6.f,0.5f, // левая задняя нога справа
  315. // 6.f,0.5f,5.f,0.5f, // левая задняя нога низ
  316. // 5.f,0.5f,5.f,1.f, // левая задняя нога слева
  317. // 5.f,1.f,4.f,1.f, // между задними и передними ногами
  318. // 4.f,1.f,4.f,0.5f, // правая передняя нога справа
  319. // 4.f,0.5f,3.f,0.5f, // правая передняя нога низ
  320. // 3.f,0.5f,3.f,1.f, // правая передняя нога слева
  321. // 3.f,1.f,2.5f,1.f, // между передних ног
  322. // 2.5f,1.f,2.5f,0.5f, // передняя нога справа
  323. // 2.5f,0.5f,1.5f,0.5f, // передняя нога низ
  324. // 1.5f,0.5f,1.5f,1.25f, // передняя нога слева
  325. // // левый глаз
  326. // 1.5f,3.5f,1.5f,3.f, // левый глаз слева сверху вниз
  327. // 1.5f,3.f,2.f,3.f, // левый глаз низ
  328. // 2.f, 3.f,2.f,3.5f, // левый глаз справа
  329. // 2.f,3.5f,1.5f,3.5f, // левый глаз верх
  330. // // правый глаз
  331. // 2.5f,3.5f,2.5f,3.f, // правый глаз слева
  332. // 2.5f,3.f,3.f, 3.f, // правый глаз снизу
  333. // 3.f,3.f,3.f,3.5f, // правый глаз справа
  334. // 3.f,3.5f,2.5f,3.5f, // правый глаз сверху
  335. // // ушные раковины
  336. // 1.f,5.5f,1.f,7.f, // левая ушная раковина
  337. // 3.5f,5.5f,3.5f,7.f, // правая ушная раковина
  338. // // нос
  339. // 2.f,2.5f,2.5f,2.5f, // нос сверху
  340. // 2.5f,2.5f,2.25f,2.f, // нос справа
  341. // 2.25f,2.f,2.f,2.5f // нос слева
  342. //};
  343.  
  344. private: System::Void MyForm_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) {
  345.  
  346. Graphics^ g = e->Graphics;
  347. g->Clear(Color::Aquamarine);
  348.  
  349. Pen^ blackPen = gcnew Pen(Color::Black, 2);
  350.  
  351. float Wx = ClientRectangle.Width; // размер окна по горизонтали
  352. float Wy = ClientRectangle.Height; // размер окна по вертикали
  353.  
  354. float aspectForm = Wx / Wy; // соотношение сторон окна рисования
  355.  
  356. float Sx, Sy;
  357. if (keepAspectRatio) {
  358. // коэффициентs увеличения при сохранении исходного соотношения сторон
  359. Sx = Sy = aspectFig < aspectForm ? Wy / Vy : Wx / Vx;
  360. }
  361. else {
  362. Sx = Wx / Vx; // коэффициент увеличения по оси Ox
  363. Sy = Wy / Vy; // коэффициент увеличения по оси Oy
  364. }
  365.  
  366. float Ty = Sy * Vy; // смещение в положительную сторону по оси Oy после смены знака
  367.  
  368. for (int i = 0; i < arrayLength; i += 4) {
  369. g->DrawLine(blackPen, Sx * lines[i], Ty - Sy * lines[i + 1],
  370. Sx * lines[i + 2], Ty - Sy * lines[i + 3]);
  371. }
  372.  
  373. }
  374. private: System::Void MyForm_Resize_1(System::Object^ sender, System::EventArgs^ e) {
  375. Refresh();
  376. }
  377. private: System::Void MyForm_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {
  378. switch (e->KeyCode) {
  379.  
  380. case Keys::M:
  381. keepAspectRatio = !keepAspectRatio;
  382. break;
  383.  
  384. default:
  385. break;
  386. }
  387. Refresh();
  388.  
  389. }
  390. };
  391. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement