مفهوم DPI Aware در ویندوز چیست و چگونه آن را کنترل کنیم؟

"DPI-aware" به این معناست که یک برنامه می‌تواند خود را با تنظیمات DPI دستگاه سازگار کند تا تصاویر، متون، و عناصر گرافیکی به درستی و با کیفیت مناسب نمایش داده...

انتشار: , زمان مطالعه: 5 دقیقه
مفهوم DPI Aware در ویندوز چیست و چگونه آن را کنترل کنیم؟
دسته بندی: برنامه نویسی تعداد بازدید: 432

مفهوم سازگاری با DPI در ویندوز

DPI (Dots Per Inch) مفهومی مهم در محیط‌های گرافیکی است که به تراکم نقاط تصویر اشاره دارد. در دنیای سیستم‌عامل ویندوز، تنظیمات DPI مربوط به چگونگی مقیاس‌بندی و نمایش برنامه‌ها در صفحه‌نمایش‌هایی با تراکم پیکسلی مختلف است.

مفهوم سازگاری با DPI در ویندوز

"سازگاری با DPI" به این معناست که یک برنامه می‌تواند خود را با تنظیمات DPI دستگاه سازگار کند تا تصاویر، متون، و عناصر گرافیکی به درستی و با کیفیت مناسب نمایش داده شوند. اگر یک برنامه با DPI سازگار باشد، می‌تواند با توجه به تراکم پیکسلی صفحه‌نمایش، محتوای خود را به درستی مقیاس‌بندی کند، بنابراین کیفیت نمایش برنامه در صفحه‌نمایش‌های مختلف (از صفحه‌نمایش‌های معمولی تا نمایشگرهای با تراکم بالا مانند 4K) حفظ می‌شود.

اهمیت سازگاری با DPI

در ویندوز، مقیاس‌بندی DPI به منظور بهبود وضوح و خوانایی رابط کاربری (UI) و اجزای متنی استفاده می‌شود. برنامه‌هایی که با این تنظیمات سازگار نیستند ممکن است هنگام اجرای آن‌ها در صفحه‌نمایش‌های مختلف، با مشکلاتی همچون تار شدن، عدم تطابق سایز، یا به هم ریختگی گرافیکی روبه‌رو شوند. برنامه‌های سازگار با DPI قادر هستند این مشکلات را به حداقل برسانند و رابط کاربری را مطابق با اندازه و تراکم پیکسلی صفحه‌نمایش کاربر تنظیم کنند.

انواع سطوح سازگاری با DPI در ویندوز

در ویندوز چندین سطح سازگاری با DPI وجود دارد که به برنامه‌نویسان اجازه می‌دهد میزان سازگاری برنامه‌های خود با تراکم‌های مختلف پیکسلی را تعیین کنند:

  1. غیر سازگار با DPI (DPI Unaware)

    • برنامه‌هایی که هیچ اطلاعی از تراکم پیکسلی ندارند و به همین دلیل ممکن است در نمایشگرهای با DPI بالا به درستی نمایش داده نشوند و اغلب تار یا کوچک به نظر برسند.

  2. سازگار با DPI سیستمی (System DPI Aware)

    • این برنامه‌ها در زمان اجرا، DPI سیستم را می‌خوانند و خود را با آن تنظیم می‌کنند. اما اگر صفحه‌نمایش تغییر کند (مثلاً با اتصال به یک مانیتور دیگر با DPI متفاوت)، این برنامه‌ها قادر به سازگاری نیستند و ممکن است نیاز به بازگشایی مجدد داشته باشند.

  3. سازگار با DPI هر مانیتور (Per-Monitor DPI Aware)

    • این برنامه‌ها به طور پویا می‌توانند خود را با تغییرات DPI مانیتور تنظیم کنند. یعنی اگر شما برنامه را از یک مانیتور با تراکم پایین به یک مانیتور با تراکم بالا منتقل کنید، برنامه بدون نیاز به بستن و باز کردن مجدد به درستی و با کیفیت بالا نمایش داده می‌شود.

نحوه فعال‌سازی سازگاری با DPI در ویندوز

برای اینکه برنامه‌ای به صورت سازگار با DPI عمل کند، برنامه‌نویسان باید از تنظیمات خاصی در کد خود و یا در فایل manifest برنامه استفاده کنند. به عنوان مثال، در فایل app.manifest یک برنامه ویندوزی، می‌توان مشخص کرد که برنامه باید با DPI سازگار باشد:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
  </windowsSettings>
</application>

همچنین در برنامه‌هایی که با استفاده از زبان‌های مدرن برنامه‌نویسی مثل C# یا C++ نوشته شده‌اند، می‌توان با استفاده از توابع API ویندوز به صورت پویا رفتار برنامه را با DPI سازگار کرد. مثلاً تابع SetProcessDpiAwareness برای تنظیم سازگاری DPI برای یک پروسه استفاده می‌شود.

فواید سازگاری با DPI

  1. وضوح بالاتر: برنامه‌هایی که با DPI سازگار هستند، در صفحه‌نمایش‌های با رزولوشن بالا وضوح بیشتری دارند و متون و تصاویر به صورت واضح‌تر و بهتری نمایش داده می‌شوند.

  2. تجربه کاربری بهبود یافته: کاربران تجربه‌ی بهتری خواهند داشت زیرا برنامه‌ها در تمام دستگاه‌ها و نمایشگرها با اندازه و تراکم پیکسلی مختلف به درستی نمایش داده می‌شوند.

  3. سازگاری با ویندوز ۱۰ و نسخه‌های بالاتر: سیستم عامل ویندوز ۱۰ تنظیمات پیشرفته‌ای برای مقیاس‌بندی DPI دارد و بسیاری از نمایشگرهای جدید تراکم پیکسلی بسیار بالایی دارند، بنابراین سازگاری برنامه‌ها با این تغییرات بسیار مهم است.

مشکلات و چالش‌های سازگاری با DPI

برنامه‌نویسی برای سازگاری با DPI معمولاً با چالش‌هایی مانند موارد زیر مواجه می‌شود:

  • پیچیدگی کدنویسی بیشتر: برای پیاده‌سازی صحیح سازگاری با DPI، نیاز به نوشتن کد اضافی برای مقیاس‌بندی صحیح رابط کاربری است.

  • تست در نمایشگرهای مختلف: باید برنامه در نمایشگرهایی با تراکم پیکسلی مختلف آزمایش شود تا از سازگاری آن اطمینان حاصل شود.

  • پشتیبانی از نسخه‌های قدیمی‌تر ویندوز: نسخه‌های قدیمی‌تر ویندوز ممکن است برخی از امکانات سازگاری با DPI را پشتیبانی نکنند، بنابراین نیاز به در نظر گرفتن این موارد است.

توضیح تنظیمات dpiAware و longPathAware در فایل Manifest

اگر می خواهید روی همه سیستم ها نرم افزار شما درست نمایش داده شود ، این قسمت برای شما بسیار کاربردی است ، فایل app.manifest در ویندوز به برنامه‌نویسان اجازه می‌دهد تا برخی از تنظیمات مهم مربوط به رفتار برنامه را مشخص کنند. در مثال زیر، دو ویژگی مهم تنظیم شده‌اند: dpiAware و longPathAware:

 <application xmlns="urn:schemas-microsoft-com:asm.v3">
   <windowsSettings>
     <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
     <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">false</longPathAware>
   </windowsSettings>
 </application>
  1. dpiAware: این ویژگی مشخص می‌کند که آیا برنامه با تنظیمات DPI سازگار است یا خیر. در مثال فوق، مقدار false به این معناست که برنامه غیر سازگار با DPI است و نمی‌تواند به صورت خودکار با تراکم پیکسلی نمایشگرهای مختلف سازگار شود. این باعث می‌شود که برنامه ممکن است در نمایشگرهای با DPI بالا کیفیت ضعیف‌تری داشته باشد و تصاویر و متون به صورت تار دیده شوند.

  2. longPathAware: این ویژگی مشخص می‌کند که آیا برنامه می‌تواند مسیرهای فایل طولانی‌تر از ۲۶۰ کاراکتر را پشتیبانی کند یا خیر. به طور پیش‌فرض، سیستم عامل ویندوز محدودیتی برای طول مسیر فایل دارد که برابر با ۲۶۰ کاراکتر است. اگر مقدار این ویژگی true باشد، برنامه قادر خواهد بود با فایل‌ها و مسیرهای طولانی کار کند. در مثال فوق، مقدار false نشان می‌دهد که این برنامه از مسیرهای طولانی پشتیبانی نمی‌کند و همچنان محدودیت پیش‌فرض ویندوز را دنبال می‌کند.


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)