Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович

Демо софт / VIP. Калейдоскоп

  • На этом уроке мы будем работать с графикой.
    На панели нарисуем графические примитивы
    и симметрично их многократно дублируем.
    Прежде чем начать писать программу,
    почитай о Калейдоскопе на Википедии.

    Задание:
    Написать квадратный калейдоскоп.
  • Дата отправки отчёта: 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];
    Теперь конечно все работает, но что это блин за магия
  • Оценка видео-уроку:
Отчёт от 8005 за Демо софт / VIP. Калейдоскоп




Оцени работу

 
Сохранить страницу:

24. Оля
Оля
ответить
→  Александр  # Прикладные / Калейдоскоп / 2015-12-07 19:12

Александр, замечательная работа, рада что ты получил отличный опыт и знания! :)


1. Евгений Витольдович
Евгений Витольдович
ответить
→  Александр  # Прикладные / Калейдоскоп / 2015-12-07 11:25

Особенность работы с массивами.
Когда ты присваиваешь один массив другому - меняется только ссылка,
а массив остаётся в единственном экземпляре.
Тебе нужно создать новый массив и в цикле скопировать все элементы.


2146. Иван
Иван
ответить
→  Александр  # Прикладные / Калейдоскоп / 2015-12-07 00:57

Красиво получилось! Отличная тренировка.


  • Отчёт оценивали:
    5419Роман+1   689Igorenzia+1   1Евгений Витольдович+1   6925Артём+1   7645Александр Львович+1   8407Наталья0   459Сергей Сергеевич+1   6958Кирилл+1   4395Денис+1   8118Юрий +1   6452Lik_Kirill+1   6080annaka+1   6391Владимир+1   4732Sergey+1   7985Андрей +1   4485Vlad Yakovlev+1   2639Морозов Юрий Александрович+1   24Оля+1   5263Павел+1   6987MichGar+1   6203Николай (nick27m)+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Закрепил знания по работе с графикой, повторил алгоритм отображения точек и статические переменные.
Трудности: Сложно было сразу понять алгоритм рисования случайных фигур.
Урок полезный, но очень сложный. Впрочем, когда это меня останавливало?:) P.S. добавил прямоугольники с уменьшёнными вдвое размерами.
Научился: Много всего, и терпения в придачу)
Трудности: Удержаться)
Очень длинный урок)