Advertisement
Gistrec

ООП ЛАБ1_v2

Sep 22nd, 2017
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.22 KB | None | 0 0
  1. // ФАЙЛ 1
  2. // 5 5 100 100 0 255 0
  3.  
  4. // ФАЙЛ 2
  5. // 20 20 120 120 0 255 0
  6.  
  7. // ФАЙЛ 3
  8. // 5 5 100 100
  9. // 10 10 80 80
  10. // 0 255 0
  11.  
  12.  
  13.  
  14.  
  15. // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
  16. //
  17.  
  18. #include "stdafx.h"
  19.  
  20.  
  21. #include <windows.h>
  22. #include <windowsx.h>
  23. #include <conio.h>
  24. #include <iostream>
  25.  
  26. struct Rectangle {
  27.     int x1, y1;
  28.     int x2, y2;
  29. };
  30.  
  31. int isValidRectangle(struct Rectangle* kvad, RECT* rt) {
  32.     if (kvad->x1 > kvad->x2 || kvad->y1 > kvad->y2) {
  33.         printf_s("Error coordinates.");
  34.         return false;
  35.     }
  36.     if (kvad->x1 < 0 || kvad->y1 < 0 || kvad->x2 > rt->right || kvad->y2 > rt->bottom) {
  37.         printf_s("Error: Out of window.");
  38.         return false;
  39.     }
  40.     if ((kvad->x2 - kvad->x1) != (kvad->y2 - kvad->y1)) {
  41.         printf_s("Error: This is not KVADRAT.");
  42.         return false;
  43.     }
  44.     return true;
  45. }
  46.  
  47. void drowUnpaintedRectangle(HDC* hdc, RECT* rt, FILE* input) {
  48.     struct Rectangle kvad;
  49.     fscanf_s(input, "%d %d %d %d", &kvad.x1, &kvad.y1, &kvad.x2, &kvad.y2);
  50.     if (!isValidRectangle(&kvad, rt)) return;
  51.     // Создаем перо и говорим, что будем рисовать этим пером
  52.     int color[3];
  53.     fscanf_s(input, "%d %d %d", &color[0], &color[1], &color[2]);
  54.     HPEN pen = SelectPen(*hdc, CreatePen(PS_SOLID, 1, RGB(color[0], color[1], color[2])));
  55.     HBRUSH brush = SelectBrush(*hdc, CreateSolidBrush(RGB(0, 0, 0))); // Фон
  56.     Rectangle(*hdc, kvad.x1, kvad.y1, kvad.x2, kvad.y2);
  57.     // удаляем красное перо
  58.     DeletePen(pen);
  59.     // удаляем зеленую кисть
  60.     DeleteBrush(brush);
  61. }
  62.  
  63. void drowPaintedRectangle(HDC* hdc, RECT* rt, FILE* input) {
  64.     struct Rectangle kvad;
  65.     fscanf_s(input, "%d %d %d %d", &kvad.x1, &kvad.y1, &kvad.x2, &kvad.y2);
  66.     if (!isValidRectangle(&kvad, rt)) return;
  67.     // Создаем перо и говорим, что будем рисовать этим пером
  68.     int color[3];
  69.     fscanf_s(input, "%d %d %d", &color[0], &color[1], &color[2]);
  70.     HPEN pen = SelectPen(*hdc, CreatePen(PS_SOLID, 1, RGB(color[0], color[1], color[2])));
  71.     HBRUSH brush = SelectBrush(*hdc, CreateSolidBrush(RGB(color[0], color[1], color[2]))); // Фон
  72.     Rectangle(*hdc, kvad.x1, kvad.y1, kvad.x2, kvad.y2);
  73.     // удаляем красное перо
  74.     DeletePen(pen);
  75.     // удаляем зеленую кисть
  76.     DeleteBrush(brush);
  77. }
  78.  
  79. void drowTwoReactangle(HDC* hdc, RECT* rt, FILE* input) {
  80.     struct Rectangle kvad;
  81.     fscanf_s(input, "%d %d %d %d", &kvad.x1, &kvad.y1, &kvad.x2, &kvad.y2);
  82.     if (!isValidRectangle(&kvad, rt)) return;
  83.     struct Rectangle kvad2;
  84.     fscanf_s(input, "%d %d %d %d", &kvad2.x1, &kvad2.y1, &kvad2.x2, &kvad2.y2);
  85.     if (!isValidRectangle(&kvad2, rt)) return;
  86.     if (kvad.x1 > kvad2.x1 || kvad2.x2 > kvad.x2 ||
  87.         kvad.y1 > kvad2.y1 || kvad2.y2 > kvad.y2) {
  88.         printf("Ne prinadlezit!!!!1!");
  89.         return;
  90.     }
  91.     HBRUSH brush;
  92.     int color[3];
  93.     fscanf_s(input, "%d %d %d", &color[0], &color[1], &color[2]);
  94.     HPEN pen = SelectPen(*hdc, CreatePen(PS_SOLID, 1, RGB(color[0], color[1], color[2])));
  95.     brush = SelectBrush(*hdc, CreateSolidBrush(RGB(color[0], color[1], color[2]))); // Фон
  96.     Rectangle(*hdc, kvad.x1, kvad.y1, kvad.x2, kvad.y2);
  97.     brush = SelectBrush(*hdc, CreateSolidBrush(RGB(0, 0, 0))); // Фон
  98.     Rectangle(*hdc, kvad2.x1, kvad2.y1, kvad2.x2, kvad2.y2);
  99. }
  100.  
  101.  
  102.  
  103. void main() {
  104.     setlocale(LC_ALL, "Russian");
  105.     // получаем идентификатор окна
  106.     HWND hwnd = GetConsoleWindow();
  107.     // получаем контекст отображения
  108.     HDC hdc = GetDC(hwnd);
  109.     RECT rt;
  110.     // получаем размер окна
  111.     GetClientRect(hwnd, &rt);
  112.  
  113.     printf("Choose programm (1, 2, 3):");
  114.     int answer = _getch();
  115.  
  116.     FILE* input;
  117.  
  118.     switch (answer) {
  119.         case '1':
  120.             system("cls");
  121.             input = fopen("1.txt", "r");
  122.             drowUnpaintedRectangle(&hdc, &rt, input);
  123.             break;
  124.         case '2':
  125.             system("cls");
  126.             input = fopen("2.txt", "r");
  127.             drowPaintedRectangle(&hdc, &rt, input);
  128.             break;
  129.         case '3':
  130.             system("cls");
  131.             input = fopen("3.txt", "r");
  132.             drowTwoReactangle(&hdc, &rt, input);
  133.             break;
  134.         default:
  135.             printf("Not found!");
  136.             break;
  137.     }
  138.     _getch();
  139.     // освобождаем контекст отображения
  140.     ReleaseDC(hwnd, hdc);
  141.     return;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement