Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
 Аватар для Pincd
0 / 0 / 0
Регистрация: 12.10.2020
Сообщений: 30

Реализация масштабирования фигуры на плоскости

22.01.2021, 20:28. Показов 4009. Ответов 1

Студворк — интернет-сервис помощи студентам
Приветствую! Нужно нарисовать фигуру и реализовать аффинные преобразования на плоскости.
У меня по заданию ромб. У меня получилось реализовать перемещение, а как выполнить масштабирование не знаю(

Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace CompGR13
{
    public partial class Form1 : Form
    {
        private Point[] Points = new Point[4];
        public Form1()
        {
            InitializeComponent();
        }
 
       private void Form1_Load(object sender, EventArgs e)
        {
            Points[0] = new Point(50,100);
            Points[1] = new Point(100,50);
            Points[2] = new Point(150,100);
            Points[3] = new Point(100,150);
            
 
            Draw();
 
        }
 
        private void Draw()
        {
            Bitmap bmp = new Bitmap(ClientSize.Width, ClientSize.Height);
            Graphics g = Graphics.FromImage(bmp);
 
            g.DrawPolygon(Pens.Black, Points);
            
 
            pictureBox1.Image = bmp;
        }
 
        private void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Left:
                    MoveFigure(x: -5);
                    break;
                case Keys.Right:
                    MoveFigure(x: 5);
                    break;
                /*case Keys.Up:
                    MoveFigure(y: -5);
                    break;
                case Keys.Down:
                    MoveFigure(y: 5);
                    break;*/
                default:
                    break;
            }
 
            void MoveFigure(int x = 0, int y = 0)
            {
                for (int i = 0; i < Points.Length; i++)
                {
                    Points[i].X += x;
                    Points[i].Y += y;
                }
 
                Draw();
            }
 
            void ResizeFigure(int x = 0, int y = 0)
            {
                
            }
 
 
        }
 
    }
}
Помогите, пожалуйста
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2021, 20:28
Ответы с готовыми решениями:

Реализация браузерного масштабирования
Как я уже выяснил, реализация масштабирования в браузерах отличается от банального var browser = webBrowser1.ActiveXInstance as...

Масштабирования фигуры.
Вообщем дали задание розработать прогу которая выводить на экран фигуру, через подпрограммы в которых должны максимально использоваться...

Реализация функции масштабирования map() Arduino в Delphi
Добрый день форумчане. В Arduino IDE имеется такая функция map(value, fromLow, fromHigh, toLow, toHigh) Описание Преобразовывает...

1
 Аватар для JustinTime
964 / 582 / 268
Регистрация: 20.12.2016
Сообщений: 1,506
22.01.2021, 21:02
Лучший ответ Сообщение было отмечено Pincd как решение

Решение

логика такая, не уверен что правильно меняю нужные точки... исправьте в своем коде
C#
1
2
3
4
5
6
7
void ResizeFigure(int x = 0, int y = 0)
{
    Points[0].X+=x;
    Points[1].Y+=y;
    Points[2].X-=x;
    Points[3].Y-=y;    
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2021, 21:02
Помогаю со студенческими работами здесь

Движение фигуры по форме в горизонтальной плоскости
Здравствуйте форумчане. Прошу у вас помощи в создании банальной программы в которой фигура должна двигаться слева на право и обратно(как...

Как рисовать трехмерные фигуры на плоскости?
Здарвствуйте, столкнулся с такой проблемой: не могу корретктно нарисовать каую либо трехмерную фигуру. Суть программы: в программу вводится...

дан признак геом фигуры на плоскости
дан признак геом фигуры на плоскости к-круг,п-прямоугольник,т-треугольник. вывести на экран периметр и площадь заданной фигуры....

Попадание точек плоскости в область фигуры
Сделал аплет, в котором можно перемещать и вращать фигуру хотел спросить , как сделать так что бы при повороте фигуры, определять точка...

Создать класс, реализующий фигуры плоскости
Решите пожалуйста Создайте класс, реализующий фигуры плоскости, согласно вашему варианту, описав в нем все необходимые свойства, все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru