Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/19: Рейтинг темы: голосов - 19, средняя оценка - 4.79
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Как правильно объявить цветовую константу

02.03.2016, 19:33. Показов 4030. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На
VB.NET
1
Private Const clr_background As Color = Color.Red
компилятор ругается.
Что не так-то?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2016, 19:33
Ответы с готовыми решениями:

Как правильно объявить массив контролов?
Всем здравствуйте. Чем отличается объявление Private rbDay As RadioButton() от Private rbDay() As RadioButton И то и то проходит....

Как правильно объявить структуру DCB (последовательный порт)
На pinvoke.net для vb.net выложено следующее представление структуры: Public Structure DCB Public DCBlength As Int32 Public...

Объявить массив как константу.
собственно, вопрос в теме - как задать значение элементов массива прямо при его объявлении? до меня дошли слухи, что это можно сделать в...

16
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
02.03.2016, 19:46
Цитата Сообщение от jkrnd Посмотреть сообщение
Что не так-то?
Что не так, читайте в студии. Там, вроде бы, все написано.
Предлагаю вам объявить цветовую константу как целочисленное значение (Integer), а в месте использования ее применить метод FromARGB

Добавлено через 1 минуту
https://msdn.microsoft.com/en-... .110).aspx
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
07.03.2016, 18:52  [ТС]
Winney, Подскажите пожалуйста как поступить с программным изменением цвета (константа или переменная, разницы нет) конкретно в следующей инструкции
VB.NET
1
e.Graphics.DrawRectangle(New Pen(Brushes.Red, 2), e.AffectedBounds)
хотелось бы поменять Red на Black на уровне переменной (константы), объявленной за пределами блока с указанной инструкцией.
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
07.03.2016, 19:14
Легко. Объявляете переменную типа Color за пределами блока с инструкцией. И пользуйте ее.

Добавлено через 3 минуты
Также можно воспользоваться параметрами приложения
1
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
07.03.2016, 19:16
Вот например
Миниатюры
Как правильно объявить цветовую константу  
2
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
07.03.2016, 19:17
Можно также воспользоваться например реестром. Ну это уже... не оч хорошо по-поему)
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
07.03.2016, 19:27  [ТС]
Цитата Сообщение от Winney Посмотреть сообщение
Легко
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
Class CToolStripRenderer    'https://msdn.microsoft.com/ru-ru/library/system.windows.forms.toolstriprenderer(v=vs.100).aspx
 
    Inherits ToolStripRenderer
 
    Public clrBorder As Color = Color.Red
 
    Protected Overrides Sub OnRenderImageMargin(ByVal e As ToolStripRenderEventArgs)
        'рисуем рамку области картинок
        'e.Graphics.DrawRectangle(New Pen(Brushes.Red, 5), e.AffectedBounds)  'так было 
        e.Graphics.DrawRectangle(New Pen(Brushes.clrBorder, 5), e.AffectedBounds)   'так сделал
    End Sub
End Class
получил исключение:
Ошибка 1 "clrBorder" не является членом "System.Drawing.Brushes".
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18303 / 14227 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
07.03.2016, 19:32
jkrnd, константа может быть только элементарным значением вроде Integer. Для других значений можно использовать Shared ReadOnly поле.
VB.NET
1
Private Shared ReadOnly clr_background As Color = Color.Red
1
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
07.03.2016, 19:40
VB.NET
1
2
3
4
5
    Private my_color As Color = Color.Black
 
    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        e.Graphics.DrawRectangle(New Pen(my_color), 0, 0, 100, 100)
    End Sub
Добавлено через 1 минуту
Кисти (brushes) используются для методов Fill_Чёнибудь

Добавлено через 3 минуты
Или вот так (если использовать параметры приложения)

VB.NET
1
e.Graphics.DrawRectangle(New Pen(My.Settings.my_settings_color), 100, 100, 100, 100)
Добавлено через 50 секунд
здесь

VB.NET
1
my_settings_color
имя переменной (см. миниатюру выше)
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
07.03.2016, 19:50  [ТС]
Цитата Сообщение от Winney Посмотреть сообщение
Pen(my_color)
это частный случай.
Допустим одним из аргументов функции будет выражение Brushes.Black заменить его на обычную цветовую переменную my_color не получится

Ошибка 1 Невозможно преобразовать значение типа "System.Drawing.Color" в "System.Drawing.Brush".
а можно так:
VB.NET
1
Dim my_color as System.Drawing.Brush
и как тогда её инициализировать ?
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
07.03.2016, 20:10
так же. почти

VB.NET
1
2
3
4
5
6
7
8
    Private my_color As Color = Color.Black
 
    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        'e.Graphics.DrawRectangle(New Pen(my_color), 0, 0, 100, 100)
        'e.Graphics.DrawRectangle(New Pen(My.Settings.my_settings_color), 100, 100, 100, 100)
        e.Graphics.FillRectangle(New SolidBrush(my_color), 0, 0, 100, 100)
        e.Graphics.FillRectangle(New SolidBrush(My.Settings.my_settings_color), 100, 100, 100, 100)
    End Sub
Добавлено через 2 минуты
jkrnd, я кажется понял вашу задумку)

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

Добавлено через 4 минуты
Про параметры можно почитать тут
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
07.03.2016, 20:13  [ТС]
Winney, мне бы простенький пример с "окошком настроек" , никогда не использовал параметры приложения.
и всё-таки как проинициализировать переменную объявленную так:
VB.NET
1
Dim my_color as System.Drawing.Brush
чёрным цветом?
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
07.03.2016, 20:37
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Не по теме:

щас поужинаю и посмотрю)



Добавлено через 15 минут
VB.NET
1
2
3
4
5
6
7
8
9
10
    Private my_color As Color = Color.Black
    Private my_brush As New System.Drawing.SolidBrush(my_color)
 
    Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
        'e.Graphics.DrawRectangle(New Pen(my_color), 0, 0, 100, 100)
        'e.Graphics.DrawRectangle(New Pen(My.Settings.my_settings_color), 100, 100, 100, 100)
        'e.Graphics.FillRectangle(New SolidBrush(my_color), 0, 0, 100, 100)
        'e.Graphics.FillRectangle(New SolidBrush(My.Settings.my_settings_color), 100, 100, 100, 100)
        e.Graphics.FillRectangle(my_brush, 100, 100, 100, 100)
    End Sub
Добавлено через 31 секунду
вместо my_color можно использовать любой цвет есессно

Добавлено через 2 минуты
Цитата Сообщение от jkrnd Посмотреть сообщение
и всё-таки как проинициализировать переменную объявленную так:
vb.netВыделить код
1
Dim my_color as System.Drawing.Brush
Подробнее здесь

Добавлено через 43 секунды
Вкратце - класс Brush - абстрактный, то есть служит всего лишь основой для других классов.

Добавлено через 1 минуту
Цитата Сообщение от jkrnd Посмотреть сообщение
мне бы простенький пример с "окошком настроек"
Ну... мне сложно придумать что у вас на уме)))
Поэтому можем сделать так: рисуйте форму с настройками, а как их сохранять - обсудим и решим. Это несложно.

Добавлено через 1 минуту
Цитата Сообщение от Winney Посмотреть сообщение
рисуйте форму с настройками
простенькую. два-три свойства, например
2
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
07.03.2016, 21:46  [ТС]
Winney, Задача решена. Всё понял. Как создать настроечное окно обычным способом уже понятно. Но разобраться с использованием "параметров приложения" не помешает. Пример сбросил. Покажите, пожалуйста на примере всего одного свойства (используется в классе CToolStripRender). Пусть это будет фон всей полоски меню и его элементов (процедура OnRenderToolStripBackground). Большое спасибо.
Вложения
Тип файла: rar Меню (ToolStripRenderer).rar (23.6 Кб, 15 просмотров)
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
09.03.2016, 13:29
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Ну, вот как то так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click
        Dim dr As DialogResult = ColorDialog1.ShowDialog()
        If dr <> Windows.Forms.DialogResult.OK Then Exit Sub
        'saving values
        My.Settings.clrBackground = ColorDialog1.Color
        My.Settings.Save()
        Me.Button1.BackColor = My.Settings.clrBackground
    End Sub
 
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ' getting values from PARAMETERS
        Me.Button1.BackColor = My.Settings.clrBackground
        Me.Button2.BackColor = My.Settings.clrItemColor
    End Sub
Миниатюры
Как правильно объявить цветовую константу  
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
09.03.2016, 14:15  [ТС]
Winney, и в каком файле это хранится?
наверное app.config?

Добавлено через 8 минут
Winney, перенёс один exe-шник из Debug в постороннюю папку. Visual Studio закрыл. Запустил exe-шник, изменил цвет. Закрыл exe-шник, перезапустил его - изменённый цвет где-то сохранился. ГДЕ??? В папке с exe-шником файлов не добавилось.
0
 Аватар для Winney
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
09.03.2016, 14:48
Цитата Сообщение от jkrnd Посмотреть сообщение
Winney, и в каком файле это хранится?
jkrnd, если честно - не задумывался над этим никогда))) Пришлось сейчас почитать немного)))
Вот здесь
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2016, 14:48
Помогаю со студенческими работами здесь

Как объявить глобальную константу?
Пример из хелпа не работает: ' Declare Public constant. Public Const MyString = 'HELP'

Как объявить текстовую константу в классе?
Добрый вечер. Нужно объявить текстовую константу в классе. Как это сделать? static const QString FAQ = &quot;faq.txt&quot;;Можно также...

Где и как объявить константу в программе
Здравствуйте. Появилась проблема. Написана программа, но не может скомпилировать, т.к. выдаёт ошибку. Её я прописал ниже. Ошибка в 16...

Не объявить константу
Доброго времени суток ! Написал скрипт. Проверил что работает и решил использователь в коде константу. Объявил её но при выполнении...

Объявить константу числа Пи
Читаю Дейтелов. Дано задание : Напишите программу, которая считывает радиус круга и печатает диаметр круга, длину окружности и площадь. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru