مشاركة عبر


أنواع أنظمة الإحداثيات

GDI+يستخدم ثلاثة إحداثيات المسافات: العالم، صفحة، و الجهاز. إحداثيات العالم هي الإحداثيات المستخدمة إلى صياغة عالم رسومية معينة وتكون الإحداثيات التي تمرر إلى الأساليب في.NET Framework. إحداثيات الصفحة تشير إلى النظام الإحداثيات المستخدمة بواسطة سطح رسم، مثل كـ النموذج أو عنصر التحكم. إحداثيات جهاز هي الإحداثيات المستخدمة من قبل الأجهزة الفعلية التي يتم رسمها على، مثل كـ الشاشة أو الورقة. عند إنشاء اتصال myGraphics.DrawLine(myPen, 0, 0, 160, 80)، النقاط التي تقوم بتمرير المعلومات إلى DrawLineأسلوب — (0, 0)و (160, 80)— في العالم إحداثيات المساحة. قبل GDI+رسم خط تشغيل شاشة، يمر عبر سلسلة من تحويلات. الإحداثيات تحويل واحد، يدعى التحويل العالم، بتحويل إحداثيات العالم إلى إحداثيات الصفحة، و تحويل آخر، يدعى تحويل الصفحة، بتحويل إحداثيات الصفحة إلى إحداثيات جهاز.

التحويلات وأنظمة إحداثيات

فرض التي تريد العمل مع إحداثيات النظام يحتوي الأصلي في النص الأساسي لمنطقة العميل وليس في الزاوية العلوية اليمنى. افترض، على سبيل المثال، أنك تريد أن 100 بكسل من الحافة اليسرى من الأصل مساحة العميل و 50 بكسل من الأعلى مساحة العميل. يبين المثال التالي مثل إحداثيات الالنظام.

نظام إحداثيات

عند إنشاء اتصال myGraphics.DrawLine(myPen, 0, 0, 160, 80)، تحصل خط هو مبين في التوضيح التالي.

نظام إحداثيات

إحداثيات نقاط الخط الخاص بك في المساحات إحداثي الثلاث كـ التالي:

العالم

(0، 0) إلى (160، 80)

الصفحة

(100، 50) إلى (260، 130)

الجهاز

(100، 50) إلى (260، 130)

ملاحظة أن المسافة إحداثي الصفحة الأصلي الموجود في الزاوية العلوية اليسرى من مساحة المحتويات الفعلية؛ ستكون الحالة دائماً. لاحظ أيضا أنه نظراً لأن وحدة قياس البكسل، إحداثيات جهاز هي نفس إحداثيات الصفحة. إذا قمت بتعيين وحدة القياس إلى شيء آخر بدلاً من وحدات البكسل (ل مثال، بوصة)، سوف تصبح إحداثيات جهاز مختلف عن إحداثيات الصفحة.

تحويل العالم، الذي خرائط بالتخزين إحداثيات العالم إلى إحداثيات صفحة، Transformخاصية Graphicsفئة. في المثال السابق، والتحويل العالم هو وحدات ترجمة 100 في اتجاه x والوحدات 50 في اتجاه y. يقوم المثال التالي بتعيين التحويل العالم من على Graphicsالكائن والذي يستخدم ثم Graphicsالكائن إلى رسم الخط الذي يظهر في الرسم التوضيحي السابق:

        myGraphics.TranslateTransform(100, 50)
        myGraphics.DrawLine(myPen, 0, 0, 160, 80)

myGraphics.TranslateTransform(100, 50);
myGraphics.DrawLine(myPen, 0, 0, 160, 80);

التحويل لها صفحة بتعيين إحداثيات الصفحة إلى إحداثيات جهاز. Graphicsفئة يوفر PageUnit PageScaleخصائص لمعالجة تحويل الصفحة. Graphicsتوفر الفئة أيضا للقراءة فقط خاصيتين، DpiXو DpiY، لفحص أفقي ورأسي نقطة في البوصة لجهاز عرض.

يمكنك استخدام PageUnitخاصية Graphicsالفئة إلى تحديد وحدة المقياس غير ذلك غير بكسل.

ملاحظة

لا يمكنك تعيين PageUnitخاصية إلى World، كرقم هو هو ليس وحدة فعلية وستؤدي على ‏‏ استثناء.

المثال التالي برسم خط من (0، 0) إلى (2، 1)، الموقع النقطة (2، 1) هو 2 بوصة يمين و 1 بوصة إلى أسفل من النقطة (0، 0):

        myGraphics.PageUnit = GraphicsUnit.Inch
        myGraphics.DrawLine(myPen, 0, 0, 2, 1)

myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);

ملاحظة

إذا لم تحدد عرض قلم عندما تقوم بإنشاء القلم، المثال السابق رسم أحد الخطوط التي هو بوصة واحدة كبيرة. يمكنك تحديد عرض القلم في وسيطة ثانية إلى Penالمنشئ:

        Dim myPen As New Pen(Color.Black, 1 / myGraphics.DpiX)

Pen myPen = new Pen(Color.Black, 1 / myGraphics.DpiX);

إذا افترضنا أن يحتوي جهاز عرض 96 نقطة لكل بوصة في الاتجاه الأفقي و 96 نقطة لكل بوصة في الاتجاه العمودي، نقاط نهاية السطر في المثال السابق حوارها s إحداثيات التالية الثلاثة إحداثيات المسافات:

العالم

(0، 0) إلى (2، 1)

الصفحة

(0، 0) إلى (2، 1)

الجهاز

(0، 0، إلى (192، 96)

لاحظ أنه نظراً لأن تنسيق أصل العالم مساحة هو الموجود في الزاوية العلوية اليسرى من منطقة العميل، إحداثيات الصفحة هي نفس إحداثيات العالم.

يمكنك يجمع تحويلات الصفحة والعالم إلى تحقيق العديد من التأثيرات. على سبيل المثال، افترض أنك تريد إلى استخدام البوصة وحدة القياس والذي تريده أصل النظام إحداثيات إلى تكون 2 بوصة من الحافة اليسرى للعميل و 1/2 بوصة من إلى p منطقة المحتويات الفعلية. يقوم المثال التالي بتعيين تحويلات العالم وصفحة من Graphicsكائن وثم رسم خط من (0، 0) إلى (2، 1):

        myGraphics.TranslateTransform(2, 0.5F)
        myGraphics.PageUnit = GraphicsUnit.Inch
        myGraphics.DrawLine(myPen, 0, 0, 2, 1)

myGraphics.TranslateTransform(2, 0.5f);
myGraphics.PageUnit = GraphicsUnit.Inch;
myGraphics.DrawLine(myPen, 0, 0, 2, 1);

يبين المثال التالي في السطر و نظام الإحداثيات.

نظام إحداثيات

إذا افترضنا أن يحتوي جهاز عرض 96 نقطة لكل بوصة في الاتجاه الأفقي و 96 نقطة لكل بوصة في الاتجاه العمودي، نقاط نهاية السطر في المثال السابق حوارها s إحداثيات التالية الثلاثة إحداثيات المسافات:

العالم

(0، 0) إلى (2، 1)

الصفحة

(2، 0.5) إلى (4، 1.5)

الجهاز

(192، 48) إلى (384، 144)

راجع أيضًا:

المبادئ

تمثيل المصفوفة من تحويلات

موارد أخرى

تحويلات وأنظمة إحداثيات