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

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

Демо софт / Двенадцать месяцев

  • На этом уроке мы будем писать программу «Двенадцать месяцев».
    Нам потребуется дюжина картинок, на каждый месяц года.

    Задание:
    Создать программу с календарём,
    которая меняет фоновый рисунок
    в зависимости от выбранного месяца.
  • Дата отправки отчёта: 21 октября 2014 г.
  • Задание выполнено: за 45 мин.
  • Что было сложным: Найти картинки
  • Комментарии: Всё хорошо
  • Оценка видео-уроку:
Отчёт от 1 за Демо софт / Двенадцать месяцев


Отчёт от 1 за Демо софт / Двенадцать месяцев




Оцени работу

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

1. Евгений Волосатов
Евгений Волосатов
ответить
# Видео-приклад / Двенадцать месяцев / 2014-10-26 07:54

Красота! :)


  • Отчёт оценивали:
    6452Кирилл Шмойлов+1  

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Работать с компонентами календаря и полем картинок. Ну засовывать и читать картинки в сам исполняемый файл.
Трудности: Доработать код, чтобы читал картинки из ресурсов.
Насколько я знаю - в исполняемый файл можно вложить ресурсы в виде картинок и тогда не нужны будут исключения. Я потратил еще час на поиск решения - как прочитать динамически из ресурсов. Как работает? 1. Создаем переменную img с универсальным типом object. 2. Получаем некие данные из ресурсов. img = Properties.Resources.ResourceManager.GetObject("_" + month); Сами картинки имеют имена в виде свойсв вида Properties.Resources. _1, Properties.Resources._2... Однако можно получить содержимое в виде набора данных через дополнительный класс ResourceManager и его метод GetObject с именем ресурса. 3. Сконвертировать общий тип object в тип Image при помощи оператора as. pictureBox.Image = img as Image; https://msdn.microsoft.com/en-us/library/cscsdfbt.aspx


Научился: Первый раз столкнулся с сообщением "Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток." и вышел из этой ситуации. (Календарь не хотел скрываться из функции таймера.)
Трудности: Делал на WPF. В компоненте Image отсутствует реализация событий Click и DoubleClick. Своя реализация получилась довольно примитивной. Делал через таймер и просто установкой переменной, события не добавлял.
Спасибо.