PDA

View Full Version : سؤال تخصصی



mohsen_sh
سه شنبه 23 خرداد 1385, 21:58 عصر
در کد زیر که برای سیاه سفید کردن عکس می باشد و متعلق به یکی از دوستان هستش چند سؤال دارم:

For x = 1 To Picsrc.ScaleWidth
For y = 1 To Picsrc.ScaleHeight
lColor = Picsrc.Point(x, y)
bRed = lColor Mod &H100
bGreen = (lColor \ &H100) Mod &H100
bBlue = lColor \ &H10000

bGray = bRed * 0.3 + bGreen * 0.59 + bBlue * 0.11
PicDest.PSet (x, y), RGB(bGray, bGray, bGray)
Next y
Next x
اول اینکه در خط اول picsrc که نام کنترل boxpicture اوله و عکس رنگی در آن است picsrc.point()x,yچه چیزی را بر می گرداند آیا فقط مختصاته یا.....
دوم اینکه از تقسیم مlcolor به 256 چه چیزی حاصل می شه
و سوم برای اینکه عکس ما با همان حالت رنگی و به همین صورت پیکسل به پیکسل ترسیم بشه در picture box دوم باید در خط آخر چه تغییری ایجاد کرد
مثل اینکه زیاد نوشتم ولی می خواستم کامل توضیح داده باشم

روانشناس
سه شنبه 23 خرداد 1385, 22:34 عصر
متد Point رنگ پیکسلی را که مختصات آن را داده اید برمی گرداند.
این رنگ بصورت یه عدد برگردانده می شود که باید آن را به R و G و B تبدیل کرد بنابراین اعمال تقسیم را روی آن انجام می دهیم.
برای سیاه و سفید کردن یه تصویر به این شکل عمل می کنیم که رنگ یه نقطه را بدست میاریم و بعد مولفه های R و G و B اون رو بدست میاریم و بعد میانگین اونها رو حساب می کنیم و دوباره رنگ بدست آمده را در همون نقطه ست می کنیم.
برای اینکه همون تصویر رو دوباره داشته باشید کافیه که خط محاسبه bGray رو حذف کنید

mohsen_sh
چهارشنبه 24 خرداد 1385, 15:53 عصر
ممنون از جوابتون
اونو قت در خط بعد به جای bgray چی بزارم ؟

mohsen_sh
پنج شنبه 25 خرداد 1385, 12:30 عصر
لطفا راهنمائی کنید من می خاهم عکس به همین شیوه یعنی پیکسل به پیکسل ترسیم بشه ولی با همان رنگ اولیه که در picture box اولی داشته