Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > BlitzMax > FAQ и уроки

Ответ
 
Опции темы
Старый 18.06.2012, 19:30   #1
ddlabuze
AnyKey`щик
 
Регистрация: 16.06.2012
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
небольшая проблема для меня;)

Привет, Что такое обратная функция для HEX Я не нашел. спасибо
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 21:27   #2
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 893
Написано 475 полезных сообщений
(для 1,462 пользователей)
Ответ: небольшая проблема для меня;)

Hex - это перевод в шестнадцатиричную систему исчесления. Гугли Hex2Dec (если я правильно понял, тебе нужен перевод из _16 в _10)
__________________

(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 21:46   #3
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: небольшая проблема для меня;)

Проблема то для тебя.. Похвастался так?

Тебе нужно как посоветовали, разобраться что такое шестнадцатеричная система исчисления, и научиться переводить в десятеричную.
Как понимаю это тебе нужно для конвертации HEX цвета в RGB?
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 22:11   #4
ddlabuze
AnyKey`щик
 
Регистрация: 16.06.2012
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: небольшая проблема для меня;)

да
если имеется простой способ.
или я должен сделать функцию с 16 случаями.
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 22:47   #5
moka
.
 
Регистрация: 04.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: небольшая проблема для меня;)

А вы русский учите? Или ещё рано в школе?

ссылка
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 23:11   #6
ddlabuze
AnyKey`щик
 
Регистрация: 16.06.2012
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: небольшая проблема для меня;)

Русский язык очень труден для меня.
(Offline)
 
Ответить с цитированием
Старый 18.06.2012, 23:25   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,442
Написано 5,269 полезных сообщений
(для 15,227 пользователей)
Ответ: небольшая проблема для меня;)

Print "$FF".ToInt()
Эх жалко в Blitz3D такого не было)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
is.SarCasm (19.06.2012)
Старый 18.06.2012, 23:29   #8
ddlabuze
AnyKey`щик
 
Регистрация: 16.06.2012
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: небольшая проблема для меня;)

браво и спасибо

C ' был настолько прост
(Offline)
 
Ответить с цитированием
Старый 19.06.2012, 10:21   #9
Черный крыс
 
Сообщений: n/a
Ответ: небольшая проблема для меня;)

Ну раз уж такая пьянка пошла...

SuperStrict

Module api.color

ModuleInfo "Version: 1.3"
ModuleInfo "Author: Albert G."
ModuleInfo "License: LGPL"
ModuleInfo "Copyright: Dynamic bytes"
ModuleInfo "Modserver: API"

ModuleInfo "History: 1.3 Release"
ModuleInfo "History: Added TColor component"
ModuleInfo "History: 1.2 Release"
ModuleInfo "History: Added Hex2RGB()"
ModuleInfo "History: 1.1 Release"
ModuleInfo "History: Added RGB2HSB()"
ModuleInfo "History: Added HSB2RGB()"
ModuleInfo "History: 1.0 Release"
ModuleInfo "History: Initial release"

Import brl.math

Private

Function Hex:String(val:Int)
	Local buf:Short[8]
	For Local k:Int = 7 To 0 Step - 1
		Local n:Int = (val & 15) + Asc("0")
		If n > Asc("9") n = n + (Asc("A") - Asc("9") - 1)
		buf[k] = n
		val:Shr 4
	Next
	Return String.FromShorts(buf, 8)
End Function

Function GetValue:Int(v:String, no:Int)
	Select v
		Case "A" Return 10
		Case "B" Return 11
		Case "C" Return 12
		Case "D" Return 13
		Case "E" Return 14
		Case "F" Return 15
		Default Return no
	End Select
End Function

Public

Type TRGB
	Field r:Byte
	Field g:Byte
	Field b:Byte
	
End Type

Type TARGB Extends TRGB
	
End Type

Type THSB Extends TRGB
	
End Type

rem

Type THSB
	Field h:Float = 0.0
	Field s:Float = 0.0
	Field b:Float = 0.0
	
	Method SetRGB(RGB:TRGB)
		Local hsb:THSB = RGB.GetHSB()
		h = hsb.h
		s = hsb.s
		b = hsb.b
	End Method
	
	Method GetRGB:TRGB()
		Local RGB:TRGB = New TRGB
		RGB.SetHSB(Self)
		Return RGB
	End Method
	
	Method SetInt(value:Int)
		Local RGB:TRGB = New TRGB
		RGB.SetInt(value)
		Local hsb:THSB = RGB.GetHSB()
		h = hsb.h
		s = hsb.s
		b = hsb.b
	End Method
	
	Method GetInt:Int()
		Local RGB:TRGB = New TRGB
		RGB.SetHSB(Self)
		Return RGB.GetInt()
	End Method
	
	Method SetHex(value:String)
		Local RGB:TRGB = New TRGB
		RGB.SetHex(value)
		Local hsb:THSB = RGB.GetHSB()
		h = hsb.h
		s = hsb.s
		b = hsb.b
	End Method
	
	Method GetHex:String()
		Local RGB:TRGB = New TRGB
		RGB.SetHSB(Self)
		Return RGB.GetHex()
	End Method
End Type

Type TRGB
	Field r:Byte = 255
	Field g:Byte = 255
	Field b:Byte = 255
	
	Method SetInt(value:Int)
		r = (value Shr 16) & $FF
		g = (value Shr 8) & $FF
		b = value & $FF
	End Method
	
	Method GetInt:Int()
		Return Int Ptr(Varptr r)[0]
	End Method
	
	Method SetHex(value:String)
		value = value.ToUpper()
		If value.Length < 8 Then value = "00" + value
		If value.Length < 8 Then Return
		
		Local v1:String, v1no:Int, v2:String, v2no:Int
		
		v1 = value[3..4]
		v1no = GetValue(v1, Int(v1))
		v2 = value[2..3]
		v2no = GetValue(v2, Int(v2)) * 16
		
		r = v2no + v1no
		
		v1 = value[5..6]
		v1no = GetValue(v1, Int(v1))
		v2 = value[4..5]
		v2no = GetValue(v2, Int(v2)) * 16
		
		g = v2no + v1no
		
		v1 = value[7..]
		v1no = GetValue(v1, Int(v1))
		v2 = value[6..7]
		v2no = GetValue(v2, Int(v2)) * 16
		
		b = v2no + v1no
	End Method
	
	Method GetHex:String()
		Return Hex(GetInt())
	End Method
	
	Method SetHSB(hsb:THSB)
		Local i:Float, f:Float, p:Float, q:Float, t:Float, r_:Float, g_:Float, b_:Float
		If hsb.s = 0.0
			r_ = hsb.b * 255.0
			g_ = r_
			b_ = g_
		Else
			Local hue:Float = hsb.h / 60.0
			i = Floor(hue)
			f = hue - i
			p = hsb.b * (1.0 - hsb.s)
			q = hsb.b * (1.0 - hsb.s * f)
			t = hsb.b * (1.0 - hsb.s * (1.0 - f))
			Select i
				Case 0
					r_ = hsb.b
					g_ = t
					b_ = p
				Case 1
					r_ = q
					g_ = hsb.b
					b_ = p
				Case 2
					r_ = p
					g_ = hsb.b
					b_ = t
				Case 3
					r_ = p
					g_ = hsb.b
					b_ = q
				Case 4
					r_ = t
					g_ = hsb.b
					b_ = p
				Default
					r_ = hsb.b
					g_ = p
					b_ = q
			End Select
			r_:*255.0
			g_:*255.0
			b_:*255.0
		End If
		r = Max(Min(r_, 0.0), 255.0)
		g = Max(Min(g_, 0.0), 255.0)
		b = Max(Min(b_, 0.0), 255.0)
	End Method
	
	Method GetHSB:THSB()
		Local hsb:THSB = New THSB
		Local m_min:Byte = Min(Min(r, g), b)
		Local m_max:Byte = Max(Max(r, g), b)
		Local delta:Byte = m_max - m_min
		If m_max <> 0
			hsb.s = Float(delta) / Float(m_max)
			hsb.b = Float(m_max) / 255.0
			If delta <> 0
				If r = m_max
					hsb.h = Float(g - b) / Float(delta)
				ElseIf g = m_max
					hsb.h = 2 + (Float(b - r) / Float(delta))
				Else
					hsb.h = 4 + (Float(r - g) / Float(delta))
				EndIf
				hsb.h:*60.0
				If hsb.h < 0.0 Then hsb.h:+360.0
				Return hsb
			End If
		End If
	End Method
End Type

Type TARGB Extends TRGB
	Field a:Byte = 255
	
	Method SetInt(value:Int)
		a = (value Shr 24) & $FF
		Super.SetInt(value)
	End Method
	
	Method SetHex(value:String)
		value = value.ToUpper()
		If value.Length < 8 Then Return
		Local a1:String = value[1..2]
		Local a1no:Int = GetValue(a1, Int(a1))
		Local a2:String = value[..1]
		Local a2no:Int = GetValue(a2, Int(a2)) * 16
		a = a2no + a1no
		Super.SetHex(value)
	End Method
End Type
 
Ответить с цитированием
Старый 21.06.2012, 20:47   #10
ddlabuze
AnyKey`щик
 
Регистрация: 16.06.2012
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: небольшая проблема для меня;)

спасибо *-*
(Offline)
 
Ответить с цитированием
Старый 23.06.2012, 11:14   #11
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Адрес: Украина
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,832 пользователей)
Ответ: небольшая проблема для меня;)

Перенесите тему плиз.
(Offline)
 
Ответить с цитированием
Старый 23.06.2012, 13:02   #12
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,442
Написано 5,269 полезных сообщений
(для 15,227 пользователей)
Ответ: небольшая проблема для меня;)

Сообщение от Dzirt Посмотреть сообщение
Перенесите тему плиз.
Куда, зачем?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 10:20.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com