![]() |
|
Detect Display Screen DPI - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : Detect Display Screen DPI (/showthread.php?tid=16088) |
Detect Display Screen DPI - silverlight - 09-06-16 السلام عليكم ورحمة الله وبركاته هذا الموضوع الهدف منه توضيح كيفية تحديد قيمة DPI الخاصة بشاشة جهاز الكمبيوتر و الإستفادة من تلك القيمة في برامجنا المختلفة مقدمـــــة هناك أساليب كثيرة لإسترداد قيمة DPI الخاصة بجهاز الكمبيوتر والأمثلة التالية توضح كيفية استرجاع تلك القيمة المثال الأول من الممكن استخدام الدالة الموجودة في الكود التالي وهي عبارة عن Un-Managed API Function وبشكل عام الدالة مصممة لإسترداد قيم كثيرة غير قيمة DPI الخاصة بجهاز الكمبيوتر PHP كود : <DllImport("gdi32.dll")>الكود التالي يوضح كيف نستخدم الدالة أعلاه لإسترداد قيمة DPI الخاصة بجهاز الكمبيوتر إما عن طريق استخدام شاشة الكمبيوتر بشكل مباشر أو عن طريق استخدام الفورم أو باستخدام اي كونترول موجود علي الفورم PHP كود : Imports System.Runtime.InteropServicesلكن وبما أن الفكرة في الكود أعلاه هي الحصول علي قيمة DpiX و قيمة DpiY وبما أن قيمتهما التي هي عبارة عن Integer تعتمد اصلا علي Screen Graphics أو تعتمد علي Control Graphics لذلك من السهل جدا الإستغناء عن الدالة GetDeviceCaps أعلاه و إعادة كتابة الكود بأسلوب أخر يسهل فهمه والأكواد التالية توضح كيفية الإستغناء عن الدألة أعلاه و تحويلها الي Managed كود المثال الثاني من الممكن الإستغناء عن الدالة GetDeviceCaps و تحويلها الي Managed Code كالتالي بحيث يتم استرجاع قيمة DPI علي هيئة SizeF PHP كود : Public Class Form2طبعا من الأسهل للمبرمج إعادة كتابة الكود أعلاه علي هيئة دالة حتي يستطيع استخدامها حين يشاء و الكود التالي يوضح شكل هذه الدالة وكيفية استخدامها PHP كود : Private Function DetectDsipalyDPI() As SizeFالمثال الثالث هذا المثال يعتمد علي نفس الأسلوب المستخدم في المثال الثاني و لكن بدلا من استخدام SizeF تم كتابة Structure اسمه DPI ومن ثم نسترجع القيمة الخاصة به PHP كود : Public Structure DPIالكود التالي يوضح شكل الدوال التي من الممكن استخامها مع DPI Structure أعلاه لإسترجاع القيمة الخاصة به PHP كود : ' Logical pixels inch in Xالكود التالي يوضح كيف تستخدم الدوال أعلاه PHP كود : Dim dpi As DPI = DetectScreenDPI()كيف نستفيد من DPI هذا هو السؤال الأهم في الموضوع و الإجابة عليه تكمن في أن كل شئ يظهر علي شاشة الكمبيوتر يتأثر تماما بقيمة DPI فعلي سبيل المثال أبعاد الكونترول أو أبعاد الفورم و أيضا الفونت و أيضا مكان الكونترول علي الفورم و ايضا الصور تتأثر بتلك القيمة إذن الفائدة من قيمة DPI هي أنه ومن الممكن استخدام تلك القيمة في عمل مقياس رسم Scale لظهور كل شئ علي شاشة الكمبيوتر مثل الصور Bitmaps/Images و الفونت Font و الأبعاد Size و مكان الكونترول Location بحيث ومهما تغيرت أبعاد شاشة الكمبيوتر يظل الفورم الخاص بك و جميع الكونترول الموجودة علي الفورم تقوم بضبط مكانها و ابعادها والفونت الخاص بها أتوماتيكيا ليتناسب مع أبعاد شاشة الكمبيوتر ولكن لهذا حديث أخر ...... في المرفقات ستجدون نسخة من جميع الأكواد مكتوبة ببرنامج الفيجوال استوديو 2015 المراجع GetDeviceCaps تقبلوا تحياتي RE: Detect Display Screen DPI - عدنان الشمري - 11-06-16 احسنت......... RE: Detect Display Screen DPI - Sajad - 11-06-16 السلام عليكم بارك الله فيكم احسنتم جزاكم الله خيراً تحياتي |