رفتن به مطلب
  • 0

ارسال مقدار رنگ به هگزا به برنامه و استفاده از آن


arastooms

سوال

سلام دوستان 
من از هاست به برنامه یک مقدار رنگ رو میفرستم که میخام در برنامه بگیرم و استفاده کنم
ولی با اررور مواجه میشم 

من با جیسون مقدار رو میفرستم 

color1: #FFFF00

در برنامه میام با map کلید color1 رو میدم و مقدار #FFFF00 میدم به یه استرینگ

و حالا که میام استفاده کنم خطا میده 

مثلا رنگ یک لیبل رو عوض کنم فکر میکنم چون رنگ از نوع int هست و نمیشه 
ممنون میشم راهنمایی بفرمایید

لینک ارسال
به اشتراک گذاری در سایت های دیگر

4 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

در 10 ساعت قبل، arastooms گفته است :

color1: #FFFF00

این کد هگزا دسیمال رنگ هست که اصلا بیسیک نمیشناستش.

باید تبدیل بشه به دسیمال، به این صورت که اولش بجای # بذارید 0x:

Dim color1 As String="#FFFF00"  'مثلا رنگی که از سرور دریافت میشه'
	color1=color1.Replace("#","0x") 'تبدیل'
	
	label1.color=color1 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 30 دقیقه قبل، پژمان نیکروان گفته است :

این کد هگزا دسیمال رنگ هست که اصلا بیسیک نمیشناستش.

باید تبدیل بشه به دسیمال، به این صورت که اولش بجای # بذارید 0x:


Dim color1 As String="#FFFF00"  'مثلا رنگی که از سرور دریافت میشه'
	color1=color1.Replace("#","0x") 'تبدیل'
	
	label1.color=color1 

 

سلام و درود پژمان جان سپاس از راهنمایی خوبت
من مشکلی در ارسال رنگ ندارم و میتونم به هر صورتی این رنگ رو ارسال کنم مثلا الان ارسال کردم 

0xffff00

و در برنامه دریافت کردم 
ولی این مقدار رو میدم به لیبل خطا میده چون رنگ مقدار int میگیره و این یک مقدار استرینگ هست به نظرم 
 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

هگز صحیح 8 رقمی هست

0xFFFFFF00

یعنی میشه اینجوری

Label1.Color = 0xFFFFFF00

 

شما باید  به این صورت کد را تبدیل کنید.

	Dim color1 As String="#FFFF00"  'مثلا رنگی که از سرور دریافت میشه'
	color1=color1.Replace("#","0xFF") 'تبدیل'
	ToastMessageShow(color1,False)

 

الان می توانید کد را در ToastMessage ببینید.

 

ولی فکر نکنم راهی باشه که بشه String را Label1.color   داد , چون قبول نمیکنه.

بعید میدونم با استرینگ بشه همچین کاری کرد.

ولی

یک پیشنهاد هم دارم  :

شما بیا یک سری رنگ خودت انتخاب کن و  برای لیبل قرار بده  و از استرینگ هم استفاده کن

یک رقمی از سرور بگیر و براش شرط بزار

مثلا از سرور range2 رو بگیره یک رنگ بشه و range1 رو بگیره یک رنگ دیگه!!!:blush:

 

	Dim color1 As String="range2"  'مثلا متنی از سرور دریافت میشه'
	
	If color1 = "range1" Then
		Label1.Color = 0xFFFFFF00
	Else If  color1 = "range2" Then
		Label1.Color = 0xFF822282
	Else
		Label1.Color = Colors.Red
	End If
	

 

این عالیه نظر شما چیه؟:DD:

 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر


 

در 2 ساعت قبل، mobah گفته است :

هگز صحیح 8 رقمی هست


0xFFFFFF00

یعنی میشه اینجوری


Label1.Color = 0xFFFFFF00

 

شما باید  به این صورت کد را تبدیل کنید.


	Dim color1 As String="#FFFF00"  'مثلا رنگی که از سرور دریافت میشه'
	color1=color1.Replace("#","0xFF") 'تبدیل'
	ToastMessageShow(color1,False)

 

الان می توانید کد را در ToastMessage ببینید.

 

ولی فکر نکنم راهی باشه که بشه String را Label1.color   داد , چون قبول نمیکنه.

بعید میدونم با استرینگ بشه همچین کاری کرد.

ولی

یک پیشنهاد هم دارم  :

شما بیا یک سری رنگ خودت انتخاب کن و  برای لیبل قرار بده  و از استرینگ هم استفاده کن

یک رقمی از سرور بگیر و براش شرط بزار

مثلا از سرور range2 رو بگیره یک رنگ بشه و range1 رو بگیره یک رنگ دیگه!!!:blush:

 


	Dim color1 As String="range2"  'مثلا متنی از سرور دریافت میشه'
	
	If color1 = "range1" Then
		Label1.Color = 0xFFFFFF00
	Else If  color1 = "range2" Then
		Label1.Color = 0xFF822282
	Else
		Label1.Color = Colors.Red
	End If
	

 

این عالیه نظر شما چیه؟:DD:

 

 

 

سلام مرسی از راهنمایی 
این ساب رو نوشتم که میاد رنگ رو میگیره هم 

rgb

هم 

argb

و تبدیل میکنه به رنگ و به خوبی کار میکنه 
امید وارم به کار شما هم بیاد و بتونید استفاده کنید 

Sub GetColor(hex As String) As Double
	Try
		'اگر به هر دلیل خطا داد محو میکنه و میاد ترانسپرنت برمیگردونه
'		حروف بزرگ و کوچک در ارسال مهم نیست
		'این مقدار رنگی که از هاست رسیده رو برمیگردونه به رنگ حتما باید به صورت زیر ارسال بشه
		'#E3E2E1
		'Log(hex.SubString2(1,3))

'اینجا میایم همه حروف رو بزرگ میکنیم که  خطا ایجاد نشه
		hex=hex.ToUpperCase

		If 	hex.Length = 7 Then
			Dim r,g,b As Int
			r = Bit.ParseInt(hex.SubString2(1,3), 16)
			g = Bit.ParseInt(hex.SubString2(3,5), 16)
			b = Bit.ParseInt(hex.SubString2(5,7), 16)
			Return Colors.RGB(r,g,b)

'این برای محو کردن هست
		Else If hex.Length = 9 Then
			Dim a,r,g,b As Int
			a = Bit.ParseInt(hex.SubString2(1,3), 16)
			r = Bit.ParseInt(hex.SubString2(3,5), 16)
			g = Bit.ParseInt(hex.SubString2(5,7), 16)
			b = Bit.ParseInt(hex.SubString2(7,9), 16)
			Return Colors.ARGB(a,r,g,b)


			Else 
'				اگر تعداد رسیده ارقامش استاندارد نباشه بی رنگ میفرستیم
			Return Colors.Transparent
				
		End If
	Catch
		
'		اگر به هر دلیلی خطا بده میاد و ترانسپرنت برمیگردونه
		Log(LastException)
		Return Colors.Transparent

	End Try
End Sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...