PDA

View Full Version : سوال: سوال رنگی!!



hmrbadboy
شنبه 13 اسفند 1390, 01:03 صبح
سلام
یه سواله محاسباتی داشتم
میدونیم که مثلا:
RGB(50,60,70)=4602930

حالا چطوری بفهمیم که 4602930 برابره اینه: RGB(50,60,70)

در اصل، چطوری میشه فهمید که یک کد رنگ چقدر قرمز و سبز و آبی داره؟

ASedJavad
شنبه 13 اسفند 1390, 02:13 صبح
سلام
خدمت شما
YourColor = 4602930
x =Right(Hex(YourColor), 6)
x = String$(6 - Len(x), "0") & x
red = CByte("&H" & Right$(x, 2))
green = CByte("&H" & Mid$(x, 3, 2))
blue = CByte("&H" & Left$(x, 2))

SlowCode
شنبه 13 اسفند 1390, 12:25 عصر
آسید جواد به احتمال 99 درصد این کد شما اشتباهه، لطفا یه امتحانی بکنید.
اگه درسته یه نمونه سورس برای سیاه و سفید کردن تصویر بزارید بی زحمت.

IamOverlord
شنبه 13 اسفند 1390, 12:42 عصر
اینم ببینید:

Public Function GetR(ByVal Color As Long)
GetR = Color Mod 256
End Function

Public Function GetG(ByVal Color As Long)
GetG = Int(Color / 256) Mod 256
End Function

Public Function GetB(ByVal Color As Long)
GetB = Int(Color / 65536)
End Function

Public Function GetGrayValue(ByVal Color As Long)
GetGrayValue = (GetR(Color) + GetG(Color) + GetB(Color)) \ 3
End Function

Public Function ToGrayColor(ByVal Color As Long)
ToGrayColor = GetGrayValue(Color)
ToGrayColor = RGB(ToGray, ToGray, ToGray)
End Function

M.T.P
شنبه 13 اسفند 1390, 12:55 عصر
می تونید از سابروتین زیر استفاده کنید:


Sub LongToRGB(ByVal nColor As Long, _
ByRef Red As Byte, _
ByRef Green As Byte, _
ByRef Blue As Byte)

Red = nColor Mod 256
Green = (nColor / 256) Mod 256
Blue = (nColor / 256 / 256) Mod 256
End Sub

برای استفاده به این شکل:


Private Sub Form_Load()
Dim R As Byte
Dim G As Byte
Dim B As Byte

Call LongToRGB(8438015, R, G, B)
MsgBox R & " " & G & " " & B
End Sub

ASedJavad
شنبه 13 اسفند 1390, 16:08 عصر
به احتمال 99 درصد این کد شما اشتباهه
درسته!
یه اشتباه کوچولو داشت که فکر میکنم حل شد.
(برا تست، یه تغییر تو کد داده بودم که فراموش کرده بودم اصلاحش کنم)

hmrbadboy
شنبه 13 اسفند 1390, 21:39 عصر
جوابشو پیدا کردم
این نمونه رو دانلود کنید
نیاز نیست توضیحی بدم. خودتون استادید!!

البته جوابی که شما دادید هم درسته
فقط میخواستم روش کارشو بدونم
لطفا توضیح بدید
مرسی

ASedJavad
شنبه 13 اسفند 1390, 22:33 عصر
سلام
اون عددي که به عنوان رنگ به شما داده ميشه در حقيقت يه عدد 6 رقمي در مبناي 16 هست که دو رقم سمت راست (که از صفر تا 255 يا به عبارت صحيح تر از 00 تا FF) بيانگر مقدار رنگ قرمز، دو رقم وسط سبز و دو رقم سمت چپ آبي هست.
حالا تمامي اين کدهايي که نوشته شده، هر کدوم به طريقي مياد اول اون عدد رو به مبناي 16 ميبره بعد دو رقم دو رقم اون رو جدا کرده و به مبناي ده بر ميگردونه.

hmrbadboy
شنبه 13 اسفند 1390, 22:50 عصر
خیلی ممنون
متوجه شدم
ایشالا همیشه برقرار باشی :چشمک: