PDA

View Full Version : سوال: تعیین مقدار رنگ قرمز و آبی و زرد



shahab.f.c
پنج شنبه 17 آذر 1390, 14:46 عصر
سلام
آیا می شود برای انتخاب رنگ به جای تعیین مقدار رنگ های (قرمز و سبز و زرد ) ، مقدار رنگهای (قرمز و زرد و آبی)
را انتخاب کرد؟

M.T.P
پنج شنبه 17 آذر 1390, 15:41 عصر
می تونید از ثابت ها استفاده کنید:

عبارت ColorConstants رو وارد کنید و دات رو بزنید تا رنگ های از پیش تعریف شده رو ببینید.

shahab.f.c
پنج شنبه 17 آذر 1390, 15:47 عصر
می خوام یک برنامه بنویسم که با تغییر 3 تا رنگ اصلی رنگ مورد نظرمو انتخاب کنم

mr-adler
پنج شنبه 17 آذر 1390, 16:46 عصر
سلام

rgb(red,green,blue)

shahab.f.c
پنج شنبه 17 آذر 1390, 16:50 عصر
خوب این که شد (قرمز سبز آبی)
می خواستم مقدار (قرمز و زرد و آبی )رو تعیین کنم

mr-adler
پنج شنبه 17 آذر 1390, 19:33 عصر
سلام

می خوام یک برنامه بنویسم که با تغییر 3 تا رنگ اصلی رنگ مورد نظرمو انتخاب کنم
جواب:

rgb(red,green,blue)

می خواستم مقدار (قرمز و زرد و آبی )رو تعیین کنم
تمامی رنگها رو میشه به این وسیله تعیین کرد:
مثل رنگ قرمز میشه:
rgb(255,0,0)
و همچنین بقیه رنگها رو.همون طور که میدونیم تمامی رنگها از ترکیب 3 رنگ اصلی بدست میان....

ho3ein.3ven
پنج شنبه 17 آذر 1390, 20:09 عصر
می تونید از ثابت ها استفاده کنید:

عبارت ColorConstants رو وارد کنید و دات رو بزنید تا رنگ های از پیش تعریف شده رو ببینید.

داداش بعد از اینکه دات زدم چی ؟
باید بهش مقدار بدم یا ... ؟

just4froum
پنج شنبه 17 آذر 1390, 20:19 عصر
بفرمایید این هم نمونه کد فقط اینو بدون که چون زرد رنگ اصلی نیست و از ترکیب رنگ قرمز و سبز تشکیل میشه پس چنین کاری اصلا درست نیست.

78889

meys34
پنج شنبه 17 آذر 1390, 21:09 عصر
بفرمایید این هم نمونه کد فقط اینو بدون که چون زرد رنگ اصلی نیست و از ترکیب رنگ قرمز و سبز تشکیل میشه پس چنین کاری اصلا درست نیست.


RGB((Red.Value + Yellow.Value / 2), Yellow.Value / 2, Blue.Value)
نه این که جواب نمیده...

این سایت RYB رو به RGB تبدیل میکنه

http://www.paintassistant.com/rybrgb.html

کد جاوا سایت رو به VB6 تبدیل کردم شد اینی که میبینی (خودم هم سر در نیاوردم چیکار میکنه....:متفکر::متفکر:)

البته به نظر درست جواب میده...:کف::کف:
تنها نکته هم اینه که RYB باید بین 0 تا 1 باشه ولی خروجی همون RGB (بین 0 تا 255) هست...

Option Explicit

Private Function cubicInt(t As Double, A As Double, B As Double) As Double
Dim weight As Double
weight = t * t * (3 - 2 * t)
cubicInt = A + weight * (B - A)
End Function


Private Function getR(iR As Double, iY As Double, iB As Double) As Double
Dim x0 As Double, x1 As Double, x2 As Double, x3 As Double, y0 As Double, y1 As Double

x0 = cubicInt(iB, 1, 0.163)
x1 = cubicInt(iB, 1, 0)
x2 = cubicInt(iB, 1, 0.5)
x3 = cubicInt(iB, 1, 0.2)
y0 = cubicInt(iY, x0, x1)
y1 = cubicInt(iY, x2, x3)

getR = Int(255 * cubicInt(iR, y0, y1))
End Function

Private Function getG(iR As Double, iY As Double, iB As Double) As Double
Dim x0 As Double, x1 As Double, x2 As Double, x3 As Double, y0 As Double, y1 As Double

x0 = cubicInt(iB, 1, 0.373)
x1 = cubicInt(iB, 1, 0.66)
x2 = cubicInt(iB, 0, 0)
x3 = cubicInt(iB, 0.5, 0.094)
y0 = cubicInt(iY, x0, x1)
y1 = cubicInt(iY, x2, x3)

getG = Int(255 * cubicInt(iR, y0, y1))
End Function

Private Function getB(iR As Double, iY As Double, iB As Double) As Double
Dim x0 As Double, x1 As Double, x2 As Double, x3 As Double, y0 As Double, y1 As Double

x0 = cubicInt(iB, 1, 0.6)
x1 = cubicInt(iB, 0, 0.2)
x2 = cubicInt(iB, 0, 0.5)
x3 = cubicInt(iB, 0, 0)
y0 = cubicInt(iY, x0, x1)
y1 = cubicInt(iY, x2, x3)

getB = Int(255 * cubicInt(iR, y0, y1))
End Function


Public Function RYB2RGB(R As Double, Y As Double, B As Double) As Double
Dim R1 As Double, G1 As Double, B1 As Double

If R > 1 Or R < 0 Or Y > 1 Or Y < 0 Or B > 1 Or B < 0 Then MsgBox "Invalid RYB values": Exit Function
R1 = getR(R, Y, B)
G1 = getG(R, Y, B)
B1 = getB(R, Y, B)
RYB2RGB = RGB(R1, G1, B1)
End Function