PDA

View Full Version : سوال: سوال در مورد خاصیت hDC



Iman_1365
دوشنبه 29 اسفند 1390, 01:42 صبح
سلام
hDC () Handle Dievice Context
چیه و چه کاربردی در ترسیم اشیاء گرافیکی داره
با تشکر

رافعی مهدی
جمعه 04 فروردین 1391, 01:57 صبح
سلام

همانطور که میدانید، علاوه بر خود فرم، هر یک از کنترلهای روی آن نیز دارای یک دستگیره (Handle) هستند. به جز این، برای رسم هر کنترل نیاز به چیزی است که محتوای گرافیکی آن کنترل بر روی آن ترسیم و نمایش داده شود که Device Context یا به اختصار DC آن کنترل نامیده میشود. DC نیز مشابه با کنترل، دارای یک Handle میباشد. به طور معمول، در برنامه های تحت Net. برخلاف برنامه هایی که به زبان Native نوشته میشدند، برنامه نویس با این Handle ها درگیر نمیشود. در Net. به جای کار با یک DC، کلاس System.Drawing.Graphics در نظر گرفته شده است. (هنگامی که جاوا معرفی شد، این صفحه ترسیم نامرئی که بر روی کنترل کشیده شده است را Canvas نامید و به همین دلیل در برخی موارد از DC به عنوان Canvas یاد میشود.) این کلاس متدهای مناسبی را برای کارهای گرافیکی در اختیار قرار میدهد که بحث کردن در مورد آنها از موضوع این تاپیک خارج است.

به هر حال، شما میتوانید از راههای مختلفی به کلاس گرافیک دست پیدا کنید که هر یک کاربرد مختص به خود را دارد. در اینجا تنها به چهار روش اشاره میشود:
1- از طریق رخداد Paint یک کنترل، به آرگومانی از جنس کلاس PaintEventArgs دست پیدا کرده و با استفاده از این آرگومان، به پراپرتی Graphics آن کنترل برسید.
2- تمام کنترلها (از جمله یک فرم) دارای متدی به نام CreateGraphics هستند که مقدار بازگشتی آن Graphics آن کنترل میباشد.
3- تمام کنترلها دارای پراپرتی Handle میباشند. یک متد static در این کلاس به نام Graphics.FromHwnd وجود دارد که دستگیره یک کنترل را گرفته و گرافیک آن را برمیگرداند.
4- با استفاده از یک تابع API به نام GetDC میتوان به hDC یک کنترل دست یافت و به کمک متد static دیگری به نام Graphics.FromHdc، گرافیک آن را در اختیار گرفت.
5- ...

موفق باشید.