Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как преобразовать тип Color в другой тип? String, Integer, Long 
V
    Опции темы
Teos
Дата 15.9.2006, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 14.9.2006

Репутация: нет
Всего: нет



Это значительно упростит работу с изображением. Помогите пожалуйста.
PM MAIL   Вверх
Exception
Дата 16.9.2006, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Ты говоришь о System.Drawing.Color? Просто приведи тип.
Код
Dim colorNumber As Integer = CInt(color)

PM   Вверх
Teos
Дата 16.9.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 14.9.2006

Репутация: нет
Всего: нет



А как сделать обратное преобразование?
PM MAIL   Вверх
Naum
Дата 16.9.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 2
Всего: 15



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

Получаем остаток этого int от деления на 256. По-моему это альфа компонента. Потом делим это число на 256. Следующий остаток - r. Повторяем операцию для получения g, b. Т.е. раньше прямое преобразование было равносильно переводу из 256-ричной системы счисления в 10-ичную. А обратное наоборот. 

В общем раньше я узнал это методом научного тыка. И сейчас можно поэкспериментировать. Попробуй переводить color в int при малых значения a,r,g,b. Может увидишь закономерность. Если будет время, то я тоже попробую.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 16.9.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Код

        Dim clr As Color = Color.Aqua
        Dim i As Integer = clr.ToArgb()
        clr = Color.FromArgb(i)


P.S. Cint() для колора не катит  smile 
PM MAIL WWW ICQ   Вверх
Exception
Дата 17.9.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Ага, точно. Всё не мог вспомнить, как звать эти методы smile . А CInt разве не катит?
PM   Вверх
ivashkanet
Дата 17.9.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(Exception @  17.9.2006,  11:29 Найти цитируемый пост)
А CInt разве не катит?

Неа, и Шарп и Барсик ругаются smile
PM MAIL WWW ICQ   Вверх
DarkDragon
Дата 17.9.2006, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



 А можно использовать и ColorTranslator классsmile

Код

         Dim clr As ColorTranslator
         'Для преобразования Color => Integer 
         clr.ToWin32(Color.Blue)
         'Для преобразования Integer => Color
         clr.FromWin32(RGB(0, 0, 255))


Exception не ругайся за RGB, просто быстрее пишется чем ToArgb() smile

Между прочим через этот статический класс можно также перевести цвета в HEX(html), и олешный integer (Ole).
Вообщем туда, и обратно конветит 3 типа: WIN32, HTML, OLE.
PM MAIL   Вверх
Exception
Дата 17.9.2006, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Ага, и правильно делают. Действительно, некорректно пытаться привести тип перечисления к Integer. Нужно воспользоваться методами класса Convert (Convert.ToInt32(), Convert.ToInt16(), Convert.ToByte()).

Добавлено @ 16:54 
Скажу ещё раз, вызов функций барсика в первую очередь плох тем, что их не получится использовать в С#, например. А решение мне понравилось, казалось бы, как привык ко фреймворку, а всегда находишь в нём что-то новое для себя smile .
PM   Вверх
DarkDragon
Дата 17.9.2006, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Цитата

   использовать в С#, например

Почему не получится? Зайди в References(Solution Explorer), добавь Microsoft Visual Basic .NET Runtime:). И се заработает.smile

Просто VS.NET в проекте VB скрывает этот реферес, а так он вполне функциональный для всех Языков.NET, я даже
на C++.NET пользовался ф-циями VB и никаких странностей не наблюдалось.smile
PM MAIL   Вверх
Exception
Дата 18.9.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Конечно, можно добавить ссылку на эту библиотеку! Но за это порядочные программисты пинают ногами, и я их прекрасно понимаю.
PM   Вверх
ivashkanet
Дата 19.9.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 5
Всего: 149



Цитата(Exception @  17.9.2006,  16:52 Найти цитируемый пост)
Действительно, некорректно пытаться привести тип перечисления к Integer.

Перечисление к интежеру --- очень даже корректно, но ведь Color не перечисление, а класс smile 
PM MAIL WWW ICQ   Вверх
Exception
Дата 19.9.2006, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Exception пошёл промывать остатки мозгов smile .
PM   Вверх
DarkDragon
Дата 19.9.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GradVin
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 19.8.2006

Репутация: 5
Всего: 8



Цитата

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


Я считаю, что настоящий программист, должен не быть порядочным, а должен искать лучшие пути создания своего проекта.
И не важно что ты используешь, главное соблюдение правил пользования (т.е. лицензия, и т. д.). А если кто начнет пинаться,
тот сам по голове, пяткой может получить. 

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

И еще коечто, дайте мне пожайлуста линк на прогу написанную порядочным прогом. Я думаю что все приложение будет
построено самостоятельно, без каких либо библиотек, кроме mscorlib естестно. Свой GUI, функции, и т.д. должно быть реализовано пользователем а не Microsoft'ом, либо посторонним пользователем или фирмой. Если кто то пинается за подключения библиотеки VB, пускай покажет что он действительно сможет это сделать!!!  smile 
PM MAIL   Вверх
Exception
Дата 19.9.2006, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 18
Всего: 186



Цитата(DarkDragon @  19.9.2006,  14:27 Найти цитируемый пост)
должен не быть порядочным, а должен искать лучшие пути создания своего проекта


Цитата(DarkDragon @  19.9.2006,  14:27 Найти цитируемый пост)
Еще пользователь не смотрит чем, и как была написана прога, он смотрит на интерфэйс(пользовательский), комфорт доступа к функциям проги, эффективность, гибкость, быстродействие(оптимизация)


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

Цитата(DarkDragon @  19.9.2006,  14:27 Найти цитируемый пост)
И еще коечто, дайте мне пожайлуста линк на прогу написанную порядочным прогом


Сайт

http://msdn.microsoft.com/practices

полностью посвящён хорошей технике программирования на .NET.

Цитата(DarkDragon @  19.9.2006,  14:27 Найти цитируемый пост)
Свой GUI, функции, и т.д. должно быть реализовано пользователем а не Microsoft'ом, либо посторонним пользователем или фирмой.


Почему же? Причём тут это?

Цитата(DarkDragon @  19.9.2006,  14:27 Найти цитируемый пост)
Если кто то пинается за подключения библиотеки VB, пускай покажет что он действительно сможет это сделать!!!


Я пинаюсь. Просто потому что это нормально реализуется средствами .NET Framework, без библиотек поддержки VB 6.

Например, следует использова ToARgb() вместо RGB(), Length вместо Len(), ToString() вместо Str(), Convert.ToInt32() вместо Val(), Substring() вместо Mid() и т.д.

Просто потому что программисты C# не захотят и не должны хотеть подключать специальные библиотеки поддержки, придуманные для тех, кто привык к VB и не может свыкнуться с Framework'ом, только чтобы перевести код.

Это сообщение отредактировал(а) Exception - 19.9.2006, 21:07
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.