Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ФАЙЛ 1
- // 5 5 100 100 0 255 0
- // ФАЙЛ 2
- // 20 20 120 120 0 255 0
- // ФАЙЛ 3
- // 5 5 100 100
- // 10 10 80 80
- // 0 255 0
- // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <windows.h>
- #include <windowsx.h>
- #include <conio.h>
- #include <iostream>
- struct Rectangle {
- int x1, y1;
- int x2, y2;
- };
- int isValidRectangle(struct Rectangle* kvad, RECT* rt) {
- if (kvad->x1 > kvad->x2 || kvad->y1 > kvad->y2) {
- printf_s("Error coordinates.");
- return false;
- }
- if (kvad->x1 < 0 || kvad->y1 < 0 || kvad->x2 > rt->right || kvad->y2 > rt->bottom) {
- printf_s("Error: Out of window.");
- return false;
- }
- if ((kvad->x2 - kvad->x1) != (kvad->y2 - kvad->y1)) {
- printf_s("Error: This is not KVADRAT.");
- return false;
- }
- return true;
- }
- void drowUnpaintedRectangle(HDC* hdc, RECT* rt, FILE* input) {
- struct Rectangle kvad;
- fscanf_s(input, "%d %d %d %d", &kvad.x1, &kvad.y1, &kvad.x2, &kvad.y2);
- if (!isValidRectangle(&kvad, rt)) return;
- // Создаем перо и говорим, что будем рисовать этим пером
- int color[3];
- fscanf_s(input, "%d %d %d", &color[0], &color[1], &color[2]);
- HPEN pen = SelectPen(*hdc, CreatePen(PS_SOLID, 1, RGB(color[0], color[1], color[2])));
- HBRUSH brush = SelectBrush(*hdc, CreateSolidBrush(RGB(0, 0, 0))); // Фон
- Rectangle(*hdc, kvad.x1, kvad.y1, kvad.x2, kvad.y2);
- // удаляем красное перо
- DeletePen(pen);
- // удаляем зеленую кисть
- DeleteBrush(brush);
- }
- void drowPaintedRectangle(HDC* hdc, RECT* rt, FILE* input) {
- struct Rectangle kvad;
- fscanf_s(input, "%d %d %d %d", &kvad.x1, &kvad.y1, &kvad.x2, &kvad.y2);
- if (!isValidRectangle(&kvad, rt)) return;
- // Создаем перо и говорим, что будем рисовать этим пером
- int color[3];
- fscanf_s(input, "%d %d %d", &color[0], &color[1], &color[2]);
- HPEN pen = SelectPen(*hdc, CreatePen(PS_SOLID, 1, RGB(color[0], color[1], color[2])));
- HBRUSH brush = SelectBrush(*hdc, CreateSolidBrush(RGB(color[0], color[1], color[2]))); // Фон
- Rectangle(*hdc, kvad.x1, kvad.y1, kvad.x2, kvad.y2);
- // удаляем красное перо
- DeletePen(pen);
- // удаляем зеленую кисть
- DeleteBrush(brush);
- }
- void drowTwoReactangle(HDC* hdc, RECT* rt, FILE* input) {
- struct Rectangle kvad;
- fscanf_s(input, "%d %d %d %d", &kvad.x1, &kvad.y1, &kvad.x2, &kvad.y2);
- if (!isValidRectangle(&kvad, rt)) return;
- struct Rectangle kvad2;
- fscanf_s(input, "%d %d %d %d", &kvad2.x1, &kvad2.y1, &kvad2.x2, &kvad2.y2);
- if (!isValidRectangle(&kvad2, rt)) return;
- if (kvad.x1 > kvad2.x1 || kvad2.x2 > kvad.x2 ||
- kvad.y1 > kvad2.y1 || kvad2.y2 > kvad.y2) {
- printf("Ne prinadlezit!!!!1!");
- return;
- }
- HBRUSH brush;
- int color[3];
- fscanf_s(input, "%d %d %d", &color[0], &color[1], &color[2]);
- HPEN pen = SelectPen(*hdc, CreatePen(PS_SOLID, 1, RGB(color[0], color[1], color[2])));
- brush = SelectBrush(*hdc, CreateSolidBrush(RGB(color[0], color[1], color[2]))); // Фон
- Rectangle(*hdc, kvad.x1, kvad.y1, kvad.x2, kvad.y2);
- brush = SelectBrush(*hdc, CreateSolidBrush(RGB(0, 0, 0))); // Фон
- Rectangle(*hdc, kvad2.x1, kvad2.y1, kvad2.x2, kvad2.y2);
- }
- void main() {
- setlocale(LC_ALL, "Russian");
- // получаем идентификатор окна
- HWND hwnd = GetConsoleWindow();
- // получаем контекст отображения
- HDC hdc = GetDC(hwnd);
- RECT rt;
- // получаем размер окна
- GetClientRect(hwnd, &rt);
- printf("Choose programm (1, 2, 3):");
- int answer = _getch();
- FILE* input;
- switch (answer) {
- case '1':
- system("cls");
- input = fopen("1.txt", "r");
- drowUnpaintedRectangle(&hdc, &rt, input);
- break;
- case '2':
- system("cls");
- input = fopen("2.txt", "r");
- drowPaintedRectangle(&hdc, &rt, input);
- break;
- case '3':
- system("cls");
- input = fopen("3.txt", "r");
- drowTwoReactangle(&hdc, &rt, input);
- break;
- default:
- printf("Not found!");
- break;
- }
- _getch();
- // освобождаем контекст отображения
- ReleaseDC(hwnd, hdc);
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement