چند نکته در ویژوال بیسیک
1ـ همیشه خاصیت ScaleMode در شیء Form و PictureBox را برابر VBPixels قرار دهید تا محاسبات بر حسب پیکسل باشند ولی برای کار با طول عرض فرم و مانیتور مجبورید از Twips استفاده کنید که اگر تقسیم بر 15 بشه به پیکسل تبدیل میشه. اما این عدد 15 از کجا میاد؟ Screen. TwipsPerPixelX و Screen. TwipsPerPixelY رو مشاهده کنید.
2ـ فضای قابل استفاده در Form و PictureBox با طول و عرض Form یا PictureBox فرق می کنه. باید از ScaleWidth و ScaleHieght استفاده کنید.
مثال: می خواهیم عرض PictureBox برابر 10 پیکسل باشد تا یک عکس با عرض 10 داخلش Load کنیم:
کد:
Picture1.Width = Picture1.Width – Picture1.ScaleWidth + 10
مقدار Picture1.Width – Picture1.ScaleWidth در واقع اندازه ی قاب دور PictureBox است که اگر BorderStyle = 0 باشد قاب دور آبجکت هم صفر میشه.
3ـ برای گرفتن رنگ پیکسل بجای Point از تابع GetPixel استفاده کنید. و برای مقدار دادن به یک پیکسل بجای PSet از تابع SetPixelV استفاده کنید. سرعت تابع SetPixelV از تابع SetPixel بیشتر است.
4ـ اگر خاصیت AutoRedraw آبجکت True باشد بعد از استفاده از SetPixel یا SetPixelV باید Refresh کنید.
5ـ اگر خاصیت AutoRedraw برابر False باشد با رخ دادن رویداد Paint آبجکت، نقاشی ها و رنگ های روی آبجکت از بین می روند. برای جلوگیری از پاک شدن چیزهایی که با متدهای گرافیکی رسم کرده اید این خاصیت را برابر True قرار دهید.
6ـ برای پیمایش عکس از صفر تا عرض عکس منهای 1 و از صفر تا ارتفاع عکس منهای 1، پیکسل ها را می خوانیم. چون اولین پیکسل دارای موقعیت 0, 0 و آخرین پیکسل دارای موقعیت ScaleWidth – 1, ScaleHeight – 1 است.
آخرین و مهمترین نکته اینه که من به گرافیک VB مسلط نیستم ولی همینهایی که بلدم از دوستان توی انجمن و از Sample های API-Guide یاد گرفتم. کتابی هم سراغ ندارم چون جز کتاب هنرستان و آموزش گام به گام ویژال بیسیک دیگه هیچ کتابی استفاده نکردم.
مهمترین منبع API-Guide هستش و اگه جایی گیر کردی تو انجمن های برنامه نویسی مثل همینجا میتونی مطرح کنی. جستجوی Google و Yahoo و ... رو هم فراموش نکن.
نقل قول: چه طور می تونم بفهمم کدوم دایره روشنه کدوم خاموشه
تو تصویر زیر مربع ها رو پیکسل فرض کن (هر چند که خیلی بزرگ هستند)
به علاوه های زرد رنگ رو هم برای نشون دادن مرکز دایره ها رو گذاشتم
دایره شماره 1 مرکزش رنگیه پس باید روشن بشه. اما چطور مختصات مرکز رو بدست بیاریم.
مختصات وسط هرچیزی میشه عرضش تقسیم بر 2
یعنی اگه عرض دایره 10 پیکسل باشه وسطش میشه 5
اما فاصله دایره از کناره صفحه رو هم باید به این مقدار اضافه کنی که با خط دوسر فلش دار سفید مشخص شده.
دایره 3 هم همینطور
اما دایرهای 2 و 4 با اینکه قسمتی از مساحتشون رنگی شده ولی نباید روشن بشن چون ما مختصات مرکز رو ملاک گرفتیم و اگر مرکز دایره ای رنگی بود باید روشن بشه.