Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
40 / 21 / 8
Регистрация: 12.03.2011
Сообщений: 145

Рисование стрелки между прямоугольниками

31.03.2011, 20:45. Показов 2830. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
namespace WindowsFormsApplication31
{
    
    public partial class Form1 : Form
    {
        public Rectangle[,] pole = new Rectangle[10, 10];
        public int[,] masivpidpole = new int[10, 10];
        public Pen pen = new Pen(Color.Red);
        public int perekluchatel = 0;
        
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            int x = e.X;
            int y = e.Y;
            for (int i = 0; i<10; i++)
                for (int j = 0; j < 10; j++)
                {
                    if (pole[i, j].Contains(x, y))
                    {
                        if (radioButton1.Checked)
                        {
                            g.FillEllipse(new SolidBrush(Color.Red), pole[i, j]);
                            masivpidpole[i,j] = 1;
                        }
                        if (radioButton2.Checked)
                        {
                            g.FillRectangle(new SolidBrush(Color.Green), pole[i, j]);
                            masivpidpole[i, j]=2;
                           
                        }
                        if (radioButton3.Checked)
                        {
                            if (masivpidpole[i, j] == 1)
                            {
                                perekluchatel = 1;
                            }
                            if (perekluchatel == 1 && masivpidpole[i,j] ==2)
                            {
                                //вот в этом месте мне нужно делать стрелку
                            }
                        }
                        
                    }
                    
                }
 
 
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            for (int i = 0; i<10; i++)
                for (int j = 0; j < 10; j++)
                {
                    pole[i, j] = new Rectangle(j*40, i*40, 40, 40 );
                }
            for (int i = 0; i<10; i++)
                for (int j = 0; j < 10; j++)
                { 
                g.DrawRectangle(pen, pole[i,j]);
 
 
                }
            
        }
    }
}
Получается есть масив прямоугольников в которых по тыку рисуется то круг, то прямоугольник, и нужно чтоб после переключения на радиобатон по тыку на круг, а потом на прямоугольник, между ними рисовалась стрелочка.
Я думаю ето можно как то сделать использовав трёхмерный масив(в третем измерении хранить индексы ячеек, а потом уже по этим индексам рисовать). но не могу реализовать. Помогите пожалуста.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.03.2011, 20:45
Ответы с готовыми решениями:

Расстояние между прямоугольниками
Задача: произвольно рисуется 2 прямоугольника на координатной плоскости X Y. Найти расстояние между прямоугольниками. Не могу доработать...

рисование и поворот стрелки на C#
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Collections; using System.ComponentModel; using...

Рисование стрелки: трудность с отрисовкой наконечника
Здравствуйте! Известны две точки - начало и конец линии. Возникла проблема - как сделать &quot;наконечник&quot; стрелки таким образом,...

7
40 / 21 / 8
Регистрация: 12.03.2011
Сообщений: 145
02.04.2011, 16:05  [ТС]
неужели ето не выполнимо???
может кто то какое то другое решение подскажет?
0
23 / 23 / 4
Регистрация: 19.04.2010
Сообщений: 50
02.04.2011, 17:56
А вы можете просто написать какое у вас задание?) А то я с этими тыками по кругам и прямоугольникам не понял в чём вобще задача
0
40 / 21 / 8
Регистрация: 12.03.2011
Сообщений: 145
02.04.2011, 23:57  [ТС]
Ну ето не вся задача, а часть, а вообще нужно создать емулятор сети Петри.
ну что то по типу http://san.spb.ru/soft/rus/petrinet.html
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
03.04.2011, 09:08
WarExpert, так а проблема-то в чём - стрелку нарисовать или определиться с координатами где именно её рисовать?
0
40 / 21 / 8
Регистрация: 12.03.2011
Сообщений: 145
03.04.2011, 09:54  [ТС]
Цитата Сообщение от Leax Посмотреть сообщение
WarExpert, так а проблема-то в чём - стрелку нарисовать или определиться с координатами где именно её рисовать?
да и в том и в том, как определить между какими елементами стрелку провести. и по каким координатам её провести
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
03.04.2011, 10:04
Цитата Сообщение от WarExpert Посмотреть сообщение
есть масив прямоугольников в которых по тыку рисуется то круг, то прямоугольник, и нужно чтоб после переключения на радиобатон по тыку на круг, а потом на прямоугольник, между ними рисовалась стрелочка
я так понял, что массив прямоугольников существует и на экране и в виде массива.
"Тык на круг, а потом на прямоугольник" - имеется в виду ткнуть мышкой в фигуру, которую видишь на экране?
И что значит - в массиве прямоугольников по тыку рисуется круг?
0
23 / 23 / 4
Регистрация: 19.04.2010
Сообщений: 50
03.04.2011, 12:17
Набросал чуток Хотя задание слабо понимаю, вот код(на скорую руку), если нажать кнопку мыши какой либо фигуре и отпустить на другой то появится соединение(хотя по хорошему надо создать класс соединения а то как то глупо получается) Я правельно понял что надо сделать? Или опять торможу?) Только у меня все фигуры не в массиве а в коллекции. Если нужны комментарии к коду то могу написать)
Вложения
Тип файла: rar RectAndCirc.rar (43.1 Кб, 91 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.04.2011, 12:17
Помогаю со студенческими работами здесь

Рисование отрезков между прямоугольниками (аналитическое решение)
Всем привет! Предлагаю тем, кто устал от односложных задач студентов решить следующую задачку Дано: Два концентрических (ну или почти)...

Найти расстояние между прямоугольниками
Задача: произвольно рисуется 2 прямоугольника на координатной плоскости X Y(С#). Найти расстояние между прямоугольниками.

Найти угол между двумя прямоугольниками
Возникла задача найти изменение расположения объекта в 2Д пространстве. Изначально был дан левый прямоуголоник как основной. После чего...

Расстояние между подобными прямоугольниками на паралельных плоскостях
Есть две паралельные плоскости. На первой изображен прямоугольник со сторонами a,b. На второй изображен подобный прямоугольник со сторонами...

Рисование стрелки
Столнкулся с проблемой - как нарисовать более-менее красивую стрелочку через координаты? т.е.: (AB) линия, (BC) грань 1, (BD) грань 2. Не...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru