جمع دو رنگ

Silver Soft

کاربر متخصص مولتی مدیا بیلدر
:Dسلام به همگی ... خیلی وقت بود نیامده بودم انجمن ولی انجمن مثل همیشه سرحاله ...

:eek:شرمنده نیمدم , نیمدم حالا هم که اومدم مثل همیشه با این سوال ها اومدم که ... :shock:

:)دوستان ببینید من یه مشکل دارم که هر چی روش کار کردم نتونستم راهی براش پیدا کنم البته الان درگیر امتحاات هستم و نتونستم زیاد باهاش کلنجار برم نمیدونم شاید بشه شایدم نشه .

:neutral:مشکل :

ببینید من 2 تا کلید تو پروژه دارم که با زدن کلید اول صفحه ی انتخاب رنگ Color Picker ضاهر میشود و با انتخاب رنگ مقدار اون در یک متغیر ذخیره میشه و کلید دوم هم همینطور.

حالا میخوام کاربر وقتی 2 کلید رو زد و 2 رنگ مورد نظر رو انتخاب کرد برنامه دو رنگ رو با هم جمع کنه و رنگ به دست اومده رو نشون بده :eek::eek::eek:

من خودم این کد رو نوشتم ولی بد یادم افتاد رنگی که شمارش تو متغییر ذخیره میشه ممکنه هر سه رنک قرمز و سبز و آبیش 3 کارکتری نباشه و MMB هم به جاش 0 که نمیزاره بلکه خالی میمونه مثلا :

رنگ سفید = 255و255و255
رنگ بنفش=128و.و255

کد:

** Open Color Picker To Chose Color
ColorPicker()
** Set 'a' string To NUM Of R,G,B Color Of Selected Color
a$=CBK_SelColor
** Get The Red Numbers Of 'a' String
cr1$=StrGet(a$,1)
cr2$=
StrGet(a$,2)
cr3$=
StrGet(a$,3)
cr1$=cr1$+cr2$+Cr3$
** Get The Green Numbers Of 'a' String
cg1$=StrGet(a$,5)
cg2$=
StrGet(a$,6)
cg3$=
StrGet(a$,7)
cg1$=cg1$+cg2$+Cg3$
** Get The Blue Numbers Of 'a' String
cb1$=StrGet(a$,9)
cb2$=
StrGet(a$,10)
cb3$=
StrGet(a$,11)
cb1$=cb1$+cb2$+Cb3$
DisplayValue("Color 1","a$")

حالا این صفر این وسط کار رو خراب میکنه چون 1 کارکتر ما به برنامه گفتیم 3 کارکتر رو بخونه و چیدمان من رو بهم میزنه و نمیزاره عددها صحیح با هم جمع شن و رنگ جدید رو درست کنن .

نمونه رو که درست کردم گزاشتم تو پیوست ... لطفا کمک کنید که کارم خیلی گیره :wink:
 

پیوست ها

  • media1.rar
    903 بایت · بازدیدها: 18

splinter cell

Well-Known Member
با سلام!
این کدی که شما نوشتی بنظر میرسه نه تنها برای صفر بلکه برای اعداد یک و دورقمی هم مشکل داره!چون شما سه رقم سه رقم شمارش میکنی پس اگر مثلا کد رنگ 20و66و4 باشه اسکریپت شما قرمز رو سه حرف اول یعنی**4و6** و سبز رو**6و2**و آبی رو هم**0** میگیره!
من روی سئوالتون دارم کار میکنم و به یه جاهایی رسوندمش!اگه کس دیگه ای تا اون موقع زودتر جواب نداد براتون میذارمش اینجا! فعلا یا حق!
 

Silver Soft

کاربر متخصص مولتی مدیا بیلدر
:)خوب دوست عزیز منظور من هم دقیقا چیزی بود که شما گفتی احتمالا نتونستم منظورم رو خوب برسونم , خلاصه همونی که شما گفتی دیگه.

در ضمن من یه فکر دیگه هم کردم که یه مشکل جدید حساب میشه .

ببین مثلا اگه ما بخوایم رنگ زرد رو با قرمز جمع کنیم :

قرمز = 255و0و0
زرد=255و255و0
حالا اگه بخوایم این دو رو با هم جمع کنیم و رنگ جدید ایجاد کنیم میشه 510و255و. :eek::razz:

اینو چی کارش کنیم ؟؟؟؟
 

silvercover

کاربر متخصص
:)خوب دوست عزیز منظور من هم دقیقا چیزی بود که شما گفتی احتمالا نتونستم منظورم رو خوب برسونم , خلاصه همونی که شما گفتی دیگه.

در ضمن من یه فکر دیگه هم کردم که یه مشکل جدید حساب میشه .

ببین مثلا اگه ما بخوایم رنگ زرد رو با قرمز جمع کنیم :

قرمز = 255و0و0
زرد=255و255و0
حالا اگه بخوایم این دو رو با هم جمع کنیم و رنگ جدید ایجاد کنیم میشه 510و255و. :eek::razz:

اینو چی کارش کنیم ؟؟؟؟

برای حل این مشکل باید حاصل جمع رنگ ها رو بر دو تقسیم کنید. مثل نمونه زیر:

کد:
  Red   = (   255    +     255     ) / 2 = 255
  Green = (    0     +     255     ) / 2 = 128
  Blue  = (    0     +      0      ) / 2 = 0

البته یاد آوری کنم که در تمامی حالات باید تقسیم بر 2 انجام بشه.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
خوب من پروژتون یه مقدار واستون تغییر دادم و فکر کنم همون چیزیه که میخاستید، البته امیدوارم
البته اون توصیه آقا حامد رو خودتون باید توش بگنجونید
 

پیوست ها

  • color-modified.rar
    2.4 کیلوبایت · بازدیدها: 19

splinter cell

Well-Known Member
مجتبی عزیز!
من سمپلی که شما گذاشتید رو نتونستم ببینم(به علت کلاس بالای بیلدر شما نسبت به مال من) در نتیجه نمیدونم از چه روشی استفاده کردین!اما من اومدم و از آرایه ها استفاده کردم.الته با یک ترفند بجای ویرگول توی اعداد CBK_SelColor از (|) استفاده کردم چون Coma (,) character cannot be used as an array delimiterو به این روش خیلی راحت و دقیق میشه پارامترهای هر رنگ رو بدست آورد و بقیه اش رو هم توی مثالی که گذاشتم ببینید!و نظرتون رو درموردش بگین !با تشکر
 

پیوست ها

  • color.rar
    1.8 کیلوبایت · بازدیدها: 19

Silver Soft

کاربر متخصص مولتی مدیا بیلدر
:wink:حامد جان ممنون بابت راهنماییت.
:)Splinter Cell عزیز ممنون بابت زحمتی که کشیدی عالی بود.
جناب Nevercom کار شما هم همینطور خیلی ساده و جالب بود من 2 ماهی میشه با MMB کارنکردم و همه چیز یادم رفته راستش اصلا به فکرم این کار نرسید در هر صورت ممنون.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
مجتبی عزیز!
من سمپلی که شما گذاشتید رو نتونستم ببینم(به علت کلاس بالای بیلدر شما نسبت به مال من) در نتیجه نمیدونم از چه روشی استفاده کردین!اما من اومدم و از آرایه ها استفاده کردم.الته با یک ترفند بجای ویرگول توی اعداد CBK_SelColor از (|) استفاده کردم چون Coma (,) character cannot be used as an array delimiterو به این روش خیلی راحت و دقیق میشه پارامترهای هر رنگ رو بدست آورد و بقیه اش رو هم توی مثالی که گذاشتم ببینید!و نظرتون رو درموردش بگین !با تشکر
سلام
اول از هر چیز بهتون پیشتهاد میکنم از MMB 4.9.8.13 استفاده کنید، ارزش دانلودش رو داره
من هم از آرایه ها استفاده کردم ولی بجای تغییر دادن ویرگول(,) به (|) اومدم در قسمت Delimiter از CHR(44 بجای علامت(,) استفاده کردم:
کد:
del$=CHR(44)
ArrayItem$[i] = GetArrayItem(Items$,del$,i)
البته مثال شما خیلی جالبتر، جامعتر و کاملتر بود.
البته من دقیقاً نمیدونم که روی سخن شما من بودم یا نه (مجتبی عزیز!) ولی چون بجز من و شما کس دیگه ای مثالی نزده بود من جواب دادم.
موفق باشید
 

splinter cell

Well-Known Member
:wink:
در ضمن در صورت استفاده از پلاگ این Plugy میشه رنگ های RGBرو به HEX تبدیل کرد و بالعکس. اونطوری پروژه کاربردی تر و حرفه ای تر میشه!
 

جدیدترین ارسال ها

بالا