Путь разработчика    

Сохранение и восстановление изображений, сделанных пользователем в C#

Оказывается, это замечательно легко. Следующий код показывает, как программа сохраняет объекты Polyline, хранящиеся в списке Polylines.

Python

В коде отображается SaveFileDialog. Если пользователь выбирает файл и нажимает кнопку «Сохранить», программа создает объект XmlSerializer. Он передает конструктору тип вещи, который он будет сериализовать. В этом случае это тип данных переменной Polylines, которая List & lt; Polyline & gt;.

Затем программа создает связанный с этим файл StreamWriter. Он вызывает метод сериализатора Serialize, передавая ему StreamWriter и объект для сериализации.

Следующий код показывает, как программа десериализует сериализованный файл.

Python

Python

...

Затем программа создает файл FileStream, связанный с файлом, открывая его, создавая FileStream.

Затем код вызывает метод Deserialize сериализатора. Результатом является общий объект, поэтому программа передает его в тип List & lt; Polyline & gt;. Наконец, он сохраняет результат в переменной Polylines и обновляет рисунок PictureBox.

Если это были внесенные вами изменения, вы могли бы сохранить и восстановить Polylines, но они не будут иметь свои свойства Цвет. Оказывается, все остальные свойства класса Polyline (int, DashStyl и даже List & lt; Point & gt; ) все сериализуются автоматически, но класс Color не работает. Это означает, что при сериализации списка Polylines их цвета не сохраняются. Когда вы перезагружаете файл, программа рисует Polylines, но вы их не видите, потому что их цвета не перезагружены.

Обходной путь заключается в создании свойства, которое представляет Color, но может быть сериализовано. В этом примере используется свойство с именем Argb, которое получает и устанавливает цветные альфа-, красные, зеленые и синие цветные компоненты цвета в виде комбинированного целого. Целое число может автоматически сериализоваться, чтобы программа работала.

Чтобы избежать небольшого усилия, программа также помещает свойство Color с атрибутом XmlIgnore, поэтому сериализатор полностью игнорирует его.

Ниже показан измененный класс Polyline.

Python

Источник: http://csharphelper.com/blog/2015/03/save-and-restore-pictures-drawn-by-the-user-in-c/



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Плитка PictureBox в C#

Если вы устанавливаете свойство BackgroundImageLayout формы >, то элемент управления заполняется копиями его фонового изображения. Странно, что элемент упр...

03 06 2020 19:25:20

Отображение всплывающих подсказок для элементов ListView в C#

В этом примере показано, как отображать различные подсказки для элементов в ListBox. Когда вы перемещаете мышь над элементом в ListBox, программа используе...

02 06 2020 14:33:56

Использование растрового изображения для значка в C#

Вы не можете установить свойство Icon формы, равное растровому изображению. К счастью, достаточно легко создать значок из растрового изображения. В этом пр...

01 06 2020 21:57:56

Разница между HashMap и Hashtable в Java?

Оба HashTable и HashMap реализуют интерфейс карты, но между ними существуют некоторые различия. Они есть: Безопасность потоков (синхронизировано) Нулевые к...

31 05 2020 6:10:23

Как сделать класс с определением и повышением событий в C#

В этом примере используется класс BankAccount для управления банковским счетом (и для определения способов и событий события). Если программа пытается удал...

30 05 2020 0:12:56

Link ComboBox и источники данных ListBox в C#

Немногие знают, что вы можете связать элементы ComboBox и ListBox с источниками данных. Если вы установите для своего свойства DataSource значение массива...

29 05 2020 19:28:11

Почему в Python нет оператора switch или case?

У Python нет оператора switch / case из-за неудовлетворительных предложений. Никто не смог предложить реализацию, которая хорошо работает с синтаксисом Pyt...

28 05 2020 5:45:42

Нарисуйте пунктирные линии с разными стилями в C#

Чтобы нарисовать пунктирные линии, создайте новый Pen и установите его свойство DashStyle, чтобы указать стиль тире, который вы хотите. Например, следующий...

27 05 2020 3:37:55

Используйте ключевое слово params в C#

Если вы используете ключевое слово params перед параметром массива, используемым в качестве параметра last в методе, тогда вызывающий код может передавать...

26 05 2020 3:50:51

Что такое фильтр ввода-вывода и как его использовать в Java?

Подобно потокам ввода-вывода, потоки фильтров также используются для управления чтением данных из базового потока. Фильтрация, выполняемая потоками, зависи...

25 05 2020 22:40:13

Получаем размер шрифта в пикселях в C#

Одна странность класса Font заключается в том, что его свойство « Размер» возвращает размер шрифта в единицах, которые использовались для создания шрифта. С...

24 05 2020 8:42:55

C++. От ламера до программера. Включая C++11 (Эллайн Алекс)

Описание книги C++. От ламера до программера. Включая C++11: Эта книга предлагает быстрый способ изучить принципы объектно-ориентированного программирования...

23 05 2020 10:24:10

Генерация слов заданной длины в C#

Пример Создание трехбуквенных слов в C# использует три вложенных цикла для генерации слов, содержащих три буквы. В этом примере используется следующий код...

22 05 2020 2:56:19

Инициализация элементов управления DataGridView с объектами в C#

В этом примере показано, как легко инициализировать элементы управления DataGridView, чтобы отобразить свойства элементов. В этом примере используется след...

21 05 2020 12:45:58

Перемещение элементов управления формы в C#

В этом примере показано, как обрабатывать элементы управления различными типами в форме. Класс Control определяет свойство Controls, которое представляет с...

20 05 2020 4:15:51

Список символов, недопустимых в именах файлов и путей в C#

В этом примере используется следующий код для отображения символов, недопустимых в именах файлов и путей. Источник: http://csharphelper.com/blog/2015/08/li...

19 05 2020 20:24:23

Случайный цвет для прокладки Аполлония в C#

Этот пример похож на пример Нарисуйте прокладку Аполлония в C# < / a> за исключением того, что он заполняет круги, которые он рисует со случайными цветами....

18 05 2020 19:37:18

В чем разница между List и Set в Java

Список - упорядоченная последовательность элементов, тогда как Set - это отдельный список элементов, которые неупорядочены Список - это тип упорядоченной к...

17 05 2020 21:11:22

Delphi 6. Учебный курс (В. В. Фаронов)

В книге "Delphi 6. Учебный курс" даются начальные сведения по системе программирования Delphi, разработанной американской корпорацией Borland International...

16 05 2020 11:25:44

Как использовать анонимные методы в C#

Мой предыдущий пост Использование предопределенные типы делегатов Action, Func и EventHandler в C# объясняют, как использовать предопределенные общие типы...

15 05 2020 6:48:53

1С: Бухгалтерия 8 с нуля. 100 уроков для начинающих (Гладкий А.)

Книга 1 С: Бухгалтерия 8 с нуля. 100 уроков для начинающих содержит полное описание приемов и методов работы с программой 1 С: Бухгалтерия 8. Рассматривается...

14 05 2020 0:45:45

Статическая синхронизация с нестатической синхронизацией в Java

Java поддерживает несколько потоков для выполнения. Это может привести к тому, что два или более потока будут обращаться к тем же полям или объектам одновр...

13 05 2020 5:44:20

Эффективный и современный С++: 42 рекомендации по использованию C++11 и C++14 (Скотт Мейерс)

В этой книге отражен бесценный опыт ее автора как программиста на C++. Новые возможности этого языка программирования, появившиеся в стандартах C++11 и C++...

12 05 2020 11:38:13

Анимация изображений в C#

В этом примере показано, как анимировать изображения, загружая их во время выполнения, а затем воспроизводя их по одному. Чтобы упростить поиск изображений...

11 05 2020 9:49:10

Преобразование Enum в String в C#

В этой статье мы напишем программу C# для преобразования Enum в String с использованием метода ToString(). Вывод: The value of this instance is Pink Источн...

10 05 2020 22:29:30

Hello World! Первая программа на Java

Наиболее распространенным примером первой Java-программы является знаменитый Hello World! программа. Прежде чем перейти к первой программе Java, вы должны...

09 05 2020 16:28:12

Перечислите уникальные слова в файле Microsoft Word в C#

Пример Список уникальных слов в тексте файл в C# показывает, как перечислить уникальные слова в текстовом файле. В этом примере показано, как перечислять у...

08 05 2020 2:45:42

Используйте двойную буферизацию, чтобы предотвратить мерцание в PictureBox в C#

Пример Использование двойной буферизации для предотвращать мерцание при рисовании на C# показывает, как сделать форму, использующую двойную буферизацию для...

07 05 2020 5:51:48

Используйте массив управления в C#

Иногда бывает полезно использовать массив управления. Еще до .NET, Visual Basic позволяет определять массивы управления во время разработки. Концепция исче...

06 05 2020 1:34:34

Перезапустите диспетчер очереди печати в C#

Время от времени мой компьютер запутывается и думает, что принтер отключен. Это не так уж плохо, за исключением того, что Windows не предоставляет простой...

05 05 2020 5:38:31

JavaScript. Справочник (Аллен Вайк)

Книга "Javascript. Справочник" представляет собой исключительно полный справочник по объектам, методам, атрибутам, высокоуровневым функциям языка написания...

04 05 2020 11:32:43

Является ли JavaScript истинным языком ООП?

В объектно-ориентированном программировании есть три основные особенности: инкапсуляция, наследование и полиморфизм. Инкапсуляция: инкапсуляция относится к...

03 05 2020 3:20:44

Заполните эллипс случайными строками в C#

Как следует из названия, этот пример рисует эллипс, заполненный случайными строками. Однако он не может просто нарисовать эллипс в обработчике событий Pain...

02 05 2020 8:49:59

Отображение текста на ProgressBar в C#

Было бы неплохо, если бы вы могли отобразить сообщение о ходе работы над ProgressBar. К сожалению, вы не можете этого сделать. Вы даже не можете помещать я...

01 05 2020 7:35:51

Генерация случайных полигонов в C#

Мне нужен был метод генерации случайных полигонов для графической программы, и следующий код показывает результат. Основная идея заключается в создании точ...

30 04 2020 23:52:12

Список USB-устройств в C#

Эта программа использует WMI (инструментарий управления Windows) для запроса на устройства USB. Чтобы использовать WMI, добавьте ссылки на System.Managemen...

29 04 2020 11:54:59

Список символов, недопустимых в именах файлов и путей в C#

В этом примере используется следующий код для отображения символов, недопустимых в именах файлов и путей. Источник: http://csharphelper.com/blog/2015/08/li...

28 04 2020 10:52:29

Hello World! Занимательное программирование ( Картер Сэнд, Уоррен Сэнд )

Привет! Любишь компьютерные игрушки? А хочешь попробовать написать что-нибудь сам? Представь, как зауважают тебя друзья, когда ты покажешь им игру своей со...

27 04 2020 3:46:32

Тип заливки в Java

Изменение значения из одного типа данных в переменную другого типа называется преобразованием типа данных. Существует два типа литья, Примитивное литье тип...

26 04 2020 1:24:26

Разница между окном, документом и экраном в JavaScript?

Объект окна JavaScript расположен вверху иерархии объектов JavaScript и представляет окно браузера. Объект окна поддерживается всеми браузерами. Все глобал...

25 04 2020 13:18:57

Сохранение управляющих изображений WPF в C#

Иногда мне нужно сохранять управляющие изображения WPF с прозрачным фоном по той или иной причине. На этот раз мне нужно было сделать несколько значков, ко...

24 04 2020 13:39:37

Hello World! Занимательное программирование ( Картер Сэнд, Уоррен Сэнд )

Привет! Любишь компьютерные игрушки? А хочешь попробовать написать что-нибудь сам? Представь, как зауважают тебя друзья, когда ты покажешь им игру своей со...

23 04 2020 16:30:28

Что такое package в Java?

Java-пакет представляет собой группу аналогичных типов классов, интерфейсов и подпакетов. Концептуально вы можете думать о том, что пакеты похожи на разные...

22 04 2020 4:46:42

Создайте библиотеку кнопок XAML в C#

В этом примере показано, как можно создать библиотеку кнопок XAML с возможностью повторного использования в WPF. Пример Создание шаблона кнопки WPF в C# ис...

21 04 2020 6:59:29

Ассемблер на примерах. Базовый курс (Рудольф Марек)

Эта книга рассказывает о двух основных режимах работы процессора, которые обязан знать каждый профессионал программирования. Тут будет описываться работа и...

20 04 2020 4:39:19

Использование метода File.Replace для резервного копирования файлов на C#

В этом примере показано, как использовать метод File.Replace для создания двухуровневой системы резервного копирования журнала. Пример Сделать файл журнала...

19 04 2020 22:57:54

В чем разница между ArrayList и LinkedList?

ArrayList и LinkedList являются классами Collection, и оба они реализуют интерфейс List. LinkedList реализует его с двусвязным списком, в то время как Arra...

18 04 2020 20:45:50

HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера, 4-е издание (Николай Прохоренок, Владимир Дронов)

Рассмотрены вопросы создания интерактивных Web-сайтов с помощью Н ТML, Javascript, PHP и MySQL, форматирования Web-страниц при помощи CSS. Даны основы Р Н Р и...

17 04 2020 10:50:31

Сохранение и восстановление изображений, сделанных пользователем в C#

Оказывается, это замечательно легко. Следующий код показывает, как программа сохраняет объекты Polyline, хранящиеся в списке Polylines. В коде отображается...

16 04 2020 17:59:47

Дмитрий Осипов - Delphi XE2

Настоящее издание посвящено новейшей разработке компании Embarcadero - языку Delphi XE2. Книга предоставляет читателю не только полное описание одного из с...

15 04 2020 17:57:26

Используйте спрайты для анимации нескольких прыгающих мячей в C#

Этот пример аналогичен описанному в сообщении Анимация нескольких подпрыгивающих шары в C# , за исключением того, что использует спрайты для управления шар...

14 04 2020 9:17:16

Отображать образцы шрифтов для всех установленных шрифтов в WPF и C#

Введите образец строки и выберите размер шрифта. Когда вы нажимаете « Показать образцы», выполняется следующий код. Этот код очищает метку имени шрифта в ни...

13 04 2020 23:48:12

Что такое литералы в Python?

Литерал - это краткий и легко видимый способ написать значение. Литералы представляют собой возможные варианты примитивных типов для этого языка. Некоторые...

12 04 2020 17:38:58

Процедурные языки программирования

Процедурные языки программирования - языки программирования, код которых можно разделить на процедуры. Программирование – это очень объемная сфера знаний, изучить которую целиком не сможет ни один человек на свете....

11 04 2020 6:14:35

Создание вашей первой программы на Python

Запуск Pytthon Interpreter После установки интерпретатор python живет в установленной директории. На компьютерах Windows установка Python обычно помещается...

10 04 2020 14:15:51

Как манипулировать Dom

Основным объектом является объект Document, который, в свою очередь, содержит несколько других дочерних объектов. Каждый элемент в документе будет иметь со...

09 04 2020 8:16:51

Получить имя исполняемого метода в C#

В этом примере показано, как вы можете получить имя метода для текущего исполняемого метода. Обычно вам не нужно получать это имя (вы можете просто посмотр...

08 04 2020 1:45:43

Как установить максимальное использование памяти для JVM?

Объем памяти, которую может использовать программа Java, зависит от ее среды. Библиотека Java Standard предоставляет следующие методы в классе выполнения....

07 04 2020 5:12:23

Современные языки программирования: список 2018

Список современных языков программирования на 2018 год. Чтобы определиться с конкретным языком программирования для изучения (одним или несколькими) нужно для начала ответить себе на вопрос:...

06 04 2020 22:38:26

Что такое стек (stacktrace)?

Stacktrace - очень полезный инструмент для отладки. Это список вызовов метода, в которых приложение было посередине, когда было выбрано исключение. Это оче...

05 04 2020 6:39:14

Почему я получаю NoClassDefFoundError в Java?

Определение класса можно запросить во время вызова метода или при создании нового экземпляра с использованием нового выражения. NoClassDefFoundError означа...

04 04 2020 0:48:12

Выполнить анимацию свойств Windows Forms в C#

Изменение свойств элемента управления со временем называется анимацией свойств. Отслеживание того, где свойства элемента управления, например, его положени...

03 04 2020 3:39:54

Сделайте миниатюры и веб-страницу для отображения изображений в каталоге в C#

В этом примере выполняется поиск в каталоге и создание миниатюр для каждого из файлов изображений, которые он находит там. Он также создает веб-страницу, к...

02 04 2020 18:57:15

Как использовать тернарный оператор в Java?

Java-тернарный оператор является единственным условным оператором, который принимает три операнда. Это условный оператор, который обеспечивает более коротк...

01 04 2020 23:52:43

Что используется для создания строки Unicode в Python?

Кодировка символов сообщает компьютеру, как интерпретировать необработанные нули и единицы в реальных символах. В настоящее время существует множество разл...

31 03 2020 22:45:16

Понимание бит-масок в C#

Некоторые значения, включая некоторые свойства, определенные платформой .NET Framework, представляют собой бит-маски. Это означает, что каждый бит в значен...

30 03 2020 15:34:59

Отображение пользовательских цветов в диалоговом окне выбора цвета в C#

В диалоговом окне выбора цвета можно отображать пользовательские цвета в 16-ю блоках в левом нижнем углу (см. рисунок). Ваш код может инициализировать эти...

29 03 2020 23:30:41

Что значит Static в Java?

Static - это модификатор без доступа. Это означает, что что-то (поле, метод, блок или вложенный класс) связано с типом, а не с каким-либо конкретным экземп...

28 03 2020 10:45:55

Сортировка элемента управления ListView, используя все его столбцы в C#

Вы можете сделать сортировку ListView, установив для свойства Sorting значение Ascending или Descending, но это займет дополнительную работу по сортировке...

27 03 2020 11:38:35

Выберите N случайных элементов из массива в C#

В этом примере создается общий метод расширения, который позволяет вам легко выбирать N случайных объектов из массива. Например, он позволяет выбрать 5 эле...

26 03 2020 12:23:38

Язык программирования C# (Хейлсберг А. 2012)

Перед вами — четвертое издание главной книги по языку C#, написанной легендой программирования — Андерсом Хейлсбергом, архитектором C#, Delphi и Turbo Pasc...

25 03 2020 4:18:17

Получить информацию о формате даты для локали компьютера в C#

Объект System.Globalization namespace's InstalledUICulture предоставляет множество статических методов, предоставляющих информацию о численном, дате и врем...

24 03 2020 7:27:21

Нарисуйте гистограмму с подсказками в C#

Пример Нарисуйте простую гистограмму в C# , объясните, как нарисовать простую гистограмму. Когда вы нажимаете на панель, эта программа отображает окно сооб...

23 03 2020 3:50:28

Что такое ссылки на методы в Java?

Ссылки на методы являются признаком Java 8. Самое большое дополнение в Java8 - это лямбда-выражения. Ссылка на метод - это сокращенный синтаксис выражения...

22 03 2020 12:10:44

Как ClassLoader работает на Java?

Java Classloader является частью JRE (Java Runtime Environment), которая динамически загружает классы Java в JVM (виртуальная машина Java). В частности, Ja...

21 03 2020 12:20:23

Как нарисовать анимированный текст в C#

Обратите внимание, что результат в исполняемом файле лучше, чем результат, предоставляемый GIF справа. GIF немного отрывистый, потому что он использует тол...

20 03 2020 11:30:16

Метод Split() в Java

Есть ситуация, когда строки содержат несколько фрагментов информации, тогда нам нужно разбить строку, чтобы извлечь отдельные фрагменты. Строки в Java можн...

19 03 2020 21:48:47


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69