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

Сохранение цветовой палитры в настройках программы на C#


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

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

Лучшим решением было бы сделать настройку, содержащую массив Color. К сожалению, это непросто, потому что настройки должны быть сериализованы и десериализованы как строки XML, а Цвет не является сериализуемым. (Я понятия не имею, почему Microsoft не сделала сериализуемым Color сериализуемым. Это было бы легко для них и было бы полезно при многих обстоятельствах.)

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

Чтобы начать работу, откройте «Обозреватель решений» и дважды щелкните элемент «Свойства». На вкладке «Настройки» создайте параметр Argbs и введите его int.

К сожалению, вкладка настроек не позволит вам выбрать массив int, но система настроек может обрабатывать такой массив, если вы создаете его «вручную». Для этого закройте Свойства и разверните его в обозревателе решений. Затем щелкните правой кнопкой мыши запись Settings.settings, выберите Open With и выберите один из текстовых редакторов, таких как XML Editor.

Найдите определение параметра внутри редактора. Он должен выглядеть примерно так:

Python

Просто измените тип параметра на System.Int32 [] и измените его значение по умолчанию на пустое значение. Результат должен выглядеть следующим образом:

Python

Теперь вы можете использовать параметр Args в качестве массива в программе. При запуске программы выполняется следующий код.

Python

Этот код проверяет, установлен ли этот параметр, если он null или массив пуст. В этих случаях он устанавливает значение, равное массиву, возвращаемому методом DefaultColors. (Загрузите пример, чтобы увидеть этот метод.)

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

Python

Код проходит через массив настроек. Для каждого целочисленного значения оно преобразует это значение в Цвет, использует Цвет для создания кисти, а затем рисует образец кисти.

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

Python

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

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

Python

Метод SaveColors вызывает Properties.Settings.Default.Save, чтобы сохранить текущие значения настроек.

Источник: http://csharphelper.com/blog/2015/11/save-a-color-palette-in-a-programs-settings-in-c/



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

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

Печать в полном масштабе на C#

В этом примере показано, как вы можете печатать в полном масштабе, поэтому объекты, нарисованные на экране, имеют одинаковый размер при печати. Обратите вн...

22 10 2019 14:34:15

Какова цель сериализации / десериализации в Java?

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

21 10 2019 11:32:45

Исключения в Java

Исключение - это событие, которое происходит во время выполнения программы, что нарушает нормальный поток инструкций программы. Он обеспечивает способ пере...

20 10 2019 18:57:47

Выполнять действия в зависимости от дня недели в C#

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

19 10 2019 7:41:52

MySQL 5.0. Библиотека программиста (Виктор Гольцман)

Эта книга предназначена для всех, кто желает освоить С У Б Д MySQL. Для ее чтения вам не нужны никакие специальные знания – достаточно быть пользователем Wind...

18 10 2019 14:30:22

Как создать документ Word в C#

В этом примере показано, как заставить C# создать документ Word. Сначала откройте диалоговое окно « Добавить ссылки». На вкладке COM выберите « Библиотека об...

17 10 2019 1:37:27

Разница между substr() и substring() в JavaScript

Строка JavaScript представляет собой объект, который представляет последовательность символов. Метод substr() извлекает части строки, начиная с символа в у...

16 10 2019 14:55:30

If, else, case в Bash

В Bash, If утверждения очень полезны.  В этом разделе нашего урока вы узнаете, как вы можете использовать, If, else, elif, case инструкции в ваших сценариях Bash....

15 10 2019 18:10:57

7 практических занятий по программированию в 1С 8.хх (Клюев В.В.)

7 практических занятий по программированию в 1 С 8.хх это пособие для освоения программирования и конфигурирования в системе 1 С: Предприятие 8.хх, на основе...

14 10 2019 17:31:11

Преобразование строки в массив символов в C#

В этой статье мы напишем программу в C# для преобразования String в массив символов.   Источник: http://www.csharpstar.com/convert-string-to-character...

13 10 2019 17:47:55

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

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

12 10 2019 16:55:52

Циклы в Java Примеры и синтаксис

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

11 10 2019 23:40:52

[Ctrl + A] Выделить весь текст в текстовом поле в C#

Часто пользователю удобно нажимать Ctrl + A, чтобы выделить весь текст в TextBox, который имеет фокус. Странно, что это не поведение по умолчанию для TextB...

10 10 2019 16:46:29

Мифы о программировании

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

09 10 2019 0:27:34

Что такое виртуальная машина Java?

Java Virtual Machine (JVM) - это спецификация, предоставляющая среду выполнения, в которой может быть запущен Java-байт-код. Как следует из названия, JVM д...

08 10 2019 5:37:11

Каковы недостатки использования InnerHTML в JavaScript?

Свойство innerHTML чрезвычайно популярно, поскольку оно обеспечивает простой способ полностью заменить содержимое элемента HTML. Другой способ сделать это...

07 10 2019 7:59:52

Как нарисовать пунктирные линии, которые видны на любом фоне в C#

В этом примере показано, как рисовать пунктирные линии, которые видны на любом фоне.  Иногда трудно рисовать линии, которые видны поверх фотографии или друг...

06 10 2019 9:16:11

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

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

05 10 2019 19:40:20

LINQ. Карманный справочник (Джозеф Албахари, Бен Албахари)

Справочник посвящен технологии LINQ (Language Integrated Query) — новой функциональной возможности языка C# и платформы .NET Framework, которая позволяет п...

04 10 2019 16:56:32

Виды языков программирования и их назначение

Какие существуют виды языков программирования? Какое у них назначение? Существует большое количество языков программирования, которые активно применяются для решения как некоторого узкого круга задач, так и во многих довольно широких сферах деятельности....

03 10 2019 18:13:50

Лутц М. Программирование на Python. Том 1 (4-е издание, 2011)

  Монументальный труд Марка Лутца « Программирование на Python» в 2-х томах представляет собой учебник по применению языка Python для решения наиболее типичн...

02 10 2019 6:48:14

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

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

01 10 2019 14:57:56

Установите вкладку RichTextBox в C#

Вы можете установить разные вкладки вкладки RichTextBox для разных частей текста элемента управления RichTextBox. В этом примере используется следующий код...

30 09 2019 3:15:12

Как составить список проверенных узлов TreeView в C#

Если для свойства CheckBoxes элемента управления TreeView установлено значение true, тогда элемент управления отображает поля, которые пользователь может п...

29 09 2019 16:59:41

Сравнение производительности типов float, double и decimal в C#

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

28 09 2019 23:35:46

Метод indexOf() в Java

Метод Java String indexOf() возвращает позицию указанной строки или символа из данной строки. Если целевая строка или символ не существует, она вернет -1....

27 09 2019 12:40:49

Hashtable в Java

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

26 09 2019 3:13:43

Файлы в каталоге автозагрузки в C#

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

25 09 2019 7:20:51

Переменные и типы данных JavaScript

Данные могут быть разных типов. Типы данных зависят от значений, которые удерживаются переменной. Следующий урок охватывает динамические типы данных JavaSc...

24 09 2019 3:40:36

Как прочитать файл в Python

Обработка файлов в Python не требует импорта модулей. Объект File предоставляет основные функции и методы, необходимые для управления файлами по умолчанию....

23 09 2019 11:15:57

Нарисуйте цветное колесо с альфа-и насыщенными значениями в C#

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

22 09 2019 20:25:58

Как сделать секундомер в C#

Эта программа представляет собой простой секундомер. Когда вы нажимаете кнопку « Пуск», программа меняет заголовок кнопки на « Стоп» и запускает Timer. По ме...

21 09 2019 23:32:14

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

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

20 09 2019 20:29:43

Как преобразовать String в Date (строки в дату) в Java?

SimpleDateFormat позволяет начать с выбора любых пользовательских шаблонов для форматирования даты и времени. Класс Java.text.SimpleDateFormat используется...

19 09 2019 2:22:49

Получить системные показатели в C#

Функция API GetSystemMetrics возвращает системные метрики, значения, которые дают размеры, используемые системой, такие как размер значков по умолчанию и т...

18 09 2019 7:57:31

Позвольте пользователю увеличить изображение на C#

Пример Предоставление автосохранения в C# объясняет, как сделать программу, которая позволяет пользователь рисует линии в разных цветах и стилях. Эта прогр...

17 09 2019 9:52:58

Инициализировать словарь в C#

Сообщение Инициализация двумерных массивов в C# объясняет как инициализировать двумерный массив. Хотя Dictionary является более сложным типом данных, вы мо...

16 09 2019 10:50:46

Java для чайников (Барри Берд)

Java — современный объектно-ориентированный язык программирования. Программа, написанная на Java, способна выполняться практически на любом компьютере. Зна...

15 09 2019 20:18:10

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

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

14 09 2019 11:54:16

Разница между capacity() и size() вектора в Java

Разница между capacity() и size() в Java.util.Vector заключается в том, что size() - это количество элементов, которые в настоящее время удерживаются, а ca...

13 09 2019 3:43:34

Фигурные изображения в C#

В этом примере показано, как использовать регионы для создания образов PictureBoxes. Формат изображения PNG позволяет вам определять прозрачные пиксели. Ка...

12 09 2019 22:32:47

Выполнение бинарного усиления контраста на изображении в C#

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

11 09 2019 12:45:22

Как определить ОС на клиентском компьютере в JavaScript?

Свойство Window.navigator только для чтения возвращает ссылку на объект Navigator, который может быть запрошен для получения информации о приложении, выпол...

10 09 2019 21:56:26

Философия Java (Брюс Эккель)

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

09 09 2019 17:55:21

Что такое интерфейс в C#

Что такое интерфейс? Интерфейс похож на чистый абстрактный класс, который содержит только абстрактные методы Детский класс должен обеспечить реализацию для...

08 09 2019 5:45:24

Почему Java не является чисто объектно-ориентированным языком?

Язык оцифрованного программирования (OOP) использует метод объектно-ориентированного программирования, который связывает связанные данные и функции с объек...

07 09 2019 13:24:23

IF, ELIF, ELSE в Python

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

06 09 2019 4:26:58

Является ли Java «pass-by-reference» или «pass-by-value»?

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

05 09 2019 7:48:57

Отображать образцы форматов для разных локалей в C#

При запуске программы выполняется следующий код. Этот код сначала создает значения float, decimal и DateTime. Затем он перебирает объекты CultureInfo, возв...

04 09 2019 5:27:36

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

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

03 09 2019 1:25:44

Что делает ключевое слово yield в Python?

Если компилятор определяет ключевое слово yield внутри функции, эта функция больше не возвращается через оператор return. Вместо этого он немедленно возвра...

02 09 2019 5:18:55

Сравните изображения, чтобы найти различия в C#

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

01 09 2019 9:19:46

Алгоритм Brute-Force в C#

В этой статье мы узнаем о реализации алгоритма в C# Brute-Force.Brute-force search или исчерпывающий поиск, также известный как генерация и тест,...

31 08 2019 5:35:33

Как добавить файл в Python?

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

30 08 2019 15:54:11

Рисование, перемещение и удаление сегментов линии в C#

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

29 08 2019 0:47:25

Как узнать реальное время в Unity 5 при помощи ntp сервера.

В этом уроке мы разберем, как узнать реальное время в Unity 5 при помощи ntp сервера для избежания "читерства" переводом времени на локальной машине....

28 08 2019 13:29:14

Как получить изображение элемента управления, формы или клиентской области формы в C#

В этом примере показано, как получить изображение элемента управления. Поскольку форма является типом управления, тот же метод позволяет получить образ фор...

27 08 2019 1:55:49

Изучаем Python, 4-е издание (Марк Лутц)

Такие известные компании, как Google и Intel, Cisco и Hewlett-Packard, используют язык Python, выбрав его за гибкость, простоту использования и обеспечивае...

26 08 2019 16:56:22

Нарисуйте звезды внутри полигонов в C#

В этом примере показано, как рисовать звезды внутри многоугольника, подключая каждую M-ю вершину по мере ее рисования. Если многоугольник имеет N сторон, а...

25 08 2019 0:33:11

Сделайте бесконечную серию меню в C#

Во время разработки я дал программе главное меню Инструменты с пунктом меню « Инструменты». Оба эти пункта меню используют следующий DropDownOpening обработ...

24 08 2019 5:16:46

Сделайте сложный график, показывающий сложный интерес к C#

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

23 08 2019 8:58:52

NumericUpDown и использование десятичных значений в C#

Большинство разработчиков знают, что элемент NumericUpDown позволяет пользователю выбирать число, но мало кто знает, что он может обрабатывать десятичные з...

22 08 2019 20:15:45


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