На этом уроке мы будем работать с графикой. На панели нарисуем графические примитивы и симметрично их многократно дублируем. Прежде чем начать писать программу, почитай о Калейдоскопе на Википедии.
Задание: Написать квадратный калейдоскоп.
Дата отправки отчёта:
7 декабря 2015 г.
Задание выполнено: за
4 час. 00 мин.
Чему научился:
рисовать на панелях. динамических их создавать. улучшил понимание статики.
Что было сложным:
Я отменил предыдущий свой отчет, так как в программе была ошибка с отображением треугольников.
Комментарии:
На утро со свежей головой решил все таки разобраться в чем дело, с помощью пошагового прохода программы нашёл все таки ошибку. я так ее и не понял. ОБЪЯСНИТЕ пож-та кто сможет.
для рисования треугольника у меня генерировался статический массив Point[] points; Позднее в зависимости от того как должна отражать панель, я создавал вспомогательный массив tempPoints[]; первое что я делал это присваивал tempPoints = points; а далее изменял координату Х или Y или сразу обе в вспомогательному массиве, и уже его передавал в функцию "рисовать".
и внимание вопрос! ПОЧЕМУ у меня при таком присваивании менялся и родительский статический массив? Вот код одного из вариантов. После такого кода родительский массив также менялся. Не могу никак понять почему.
if (!x && y) { tempPoints = points; for (int i = 0; i < points.Length; i++) { tempPoints[i].X = width - points[i].X; tempPoints[i].Y = points[i].Y; } graph.FillPolygon(brush, tempPoints); }
Решение было лишь в том что вместо tempPoints = points; создавал новый tempPoints = new Point[points.Lenght]; Теперь конечно все работает, но что это блин за магия
Особенность работы с массивами. Когда ты присваиваешь один массив другому - меняется только ссылка, а массив остаётся в единственном экземпляре. Тебе нужно создать новый массив и в цикле скопировать все элементы.
Научился: Очень многому. Создание и использование графики, создание объектов "на лету", рисование графических примитивов. Трудности: Понимать где в каком объекте какой ипользуется тип данных Отличный и достаточно насыщенный для меня урок.