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

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

 9913

-- vip

Новые технологии / Обои рабочего стола

  • Составляем программу - менеджер фоновых рисунков для рабочего стола.
  • Дата отправки отчёта: 18 декабря 2018 г.
  • Задание выполнено: за 21 час. 52 мин.
  • Чему научился: Хорошее приложение. Большой навык практической работы от элементов формы до работы с реестром.
    Внимание! Проблему с удалением файлов (pictureBox.Image = Image.FromFile(dir+name) -было так) решил таким кодом:

    using (FileStream fs = new FileStream(dir + name, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))           
                {
                    pictureBox.Image = Image.FromStream(fs);
                }
    т.е. читаем не прямым доступом а потоком. Видимо потоки правильно закрываются и освобождают файлы для дальнейшей работы
  • Что было сложным: накосячил с директорией картинок
    никак не мог понять почему она у меня не заводится
    оказалось все банально просто - невнимательность - в условии создания забыл ! поставить

    да с удалением картинки кто бы мог догадаться - интрига

    Ждем продолжения урока - как поставить видео вместо обоев на рабочий стол - например фоном аквариум с рыбками.
  • Оценка видео-уроку:
Отчёт от 9913 за Новые технологии / Обои рабочего стола




Оцени работу

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

10558. --
Иван Воронин
Иван Воронин
ответить
→  vip  # Новые технологии / Обои рабочего стола / 2018-12-18 19:16

Молодец, хорошо проработал и решил проблему с удалением сам. Using используется как раз для таких случаев, так как он более компактный и при завершении задачи, он высвобождает используемые ресурсы и файлы. Вместо этого можно было использовать .Close() и .Dispose(), но Using более красиво выглядит и точно ничего нигде не забудешь.


1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  vip  # Новые технологии / Обои рабочего стола / 2018-12-20 11:46

Думаю, такое и сам сможешь написать


  • Отчёт оценивали:
    20563Никита0   10558Иван Воронин+1   10494Алексей В.+1   Посетитель+1   18626superGrover+1   791Валерий Жданов+1   10100Александр Заскотченко+1   10895Danil42Russia+1   11019Trira+1   17947Dmitry Sinitsin+1   17606Виктор+1   1Евгений Волосатов+1   3922Александр+1  

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





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

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

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

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


Научился: Взаимодействию с Windows API.
Трудности: Подружиться с Windows API. Да, и почему то в редакторе реестра, в том параметре, где указывается путь к скриншоту, у меня написан короткий путь к файлу, а не полный. Поэтому у меня вместо фона устанавливался черный фон. Пришлось немного пошаманить с переменной dir, чтобы в этот параметр заносился полный путь. Я добился своего, но обратной стороной медали стало то, что теперь в перечне скриншотов в самой программе я не могу избавиться от косой черты в именах файлов. Но основную задачу я при этом выполнил - файлы успешно скачиваются по ссылке и устанавливаются в виде фона. Если будет время и настраение - буду думать как избавиться от косой черты. Спасибо за интересный, хоть и сложный урок.



Научился: Управлять обоями рабочего стола, управлять файлами, создавать папки.
Трудности: Вывести обои рабочего стола (потребовалось указать полный путь)
1) При попытке установить фоновый рисунок экран закрашивался в черный цвет. В реестре путь выглядел как paper/file.jpg. Пришлось прописать полный путь следующим образом: string dir = Environment.CurrentDirectory + "\\paper\\"; Может, конечно, в уроке это место просмотрела. 2) Я не стала удалять PictureBox, а просто освободила ресурсы перед удалением файла, и все получилось: private void list_picture_KeyDown(object sender, KeyEventArgs e) { if(e.KeyCode == Keys.Delete) { if (list_picture.SelectedIndex < 0) return; try { picture.Image.Dispose(); // вот эта строка высвобождает ресурсы picture.Image = null; File.Delete(dir + list_picture.SelectedItem.ToString()); ReloadPictures(); } catch { } } }