إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

الرسم في مكتبة Gtk

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • الرسم في مكتبة Gtk

    الرسم في مكتبة Gtk مع الملاحظة المعلومات المذكورة تعتمد على الإصدار الثالث والكلام عن الأمثلة كان بلغة البرمجة بايثون.


    اضغط على الصورة لعرض أكبر. 

الإسم:	69505650086_n.png 
مشاهدات:	53 
الحجم:	86.4 كيلوبايت 
الهوية:	983619

    تستخدم مكتبة Gtk الرسومية مكتبة Cairo للرسم .

    مكتبة Cairo يمكنها الرسم إذا صح التعبير على عدت أسطح Surfaces منها pdf و svg و png ومثلا من خلال Gtk تستطيع الرسم على بعض النوافذ الخاصة بالانظمة بمعنى أخر يمكنك الرسم من خلالها وإستخراج النتيجة أيضا كملف pdf أو svg و أيضا صورة png .

    فقط لتقريب الصورة الأمر شبيه بالصورة المرفقة, بذات الطريقة ممكن الرسم على أنواع من الأسطح مثلا القماش أو مثلا البلاستيك أو مثلا الأكواب و...إلخ.

    أيضا فقط للتوضيح يتم تحديد الطلاء ويسمى source ويتم رسم الحدود وتسمى path إن كان حدود دائرة أو مستطيل او أشكال معقدة ثم ممكن الطباعة على ال surface من خلال تمرير الطلاء على ال path إن كان Fill أو Stroke الرابط في الأسفل من وثائق Cairo في صور لتوضح الامر أكثر .
    http://www.tortall.net/mu/wiki/CairoTutorial

    في حالة Gtk تعمل دورة حياة البرنامج عند تشغيله Gtk.main بشكل دائم وتنتظر حدوث أحداث معينة مثلا قام المستخدم بالضغط على الزر الفلاني فإحتاج الأمر إعادة رسم شيء معين مثلا ال progressbar أو ال spinner أو أي شيء أخر أو حتى عند تغير حجم النافذة أو إخفائها ثم ظهورها أو إختفاء قسم منها وراء نافذة أخرى و...إلخ .

    عندها ستم إعادة رسم المطلوب بسرعة فائقة لا تلاحظها ويمكننا أيضا الطلب بشكل صريح إعادة رسم عنصر معين من خلال queue_draw لكن إستخدامها قليل جدا وربما لن تحتاجها ,

    لهذا في البرمجة الرسومية مثلا Gtk الأمور التي قد تأخذ وقت طويل مثلا تنزيل ملف ما من الإنترنت يجب أن نشغلها بأي طريقة متوفرة ومناسبة في Thread منفصل عن ال Main Thread التي تكون Gtk.main تعمل منها حتى لا نفاطع عملها المهم جدا .

    مع الملاحظة Gtk ليست thread safety لهذا عند طلب منها شيء ما خارج ال Main Thread يجب إستخدام شيء مثل GLib.idle_add مثلا لتشغيل Gtk.Spinner.start() من خارج ال Main Thread فرضا إسم المتغير my_spinner.

    كود:
    GLib.idle_add(my_spinner.start)
    يمكننا الرسم في Gtk3 على widget إسمها Gtk.DrawingArea وأيضا بعض العناصر مثل النافذة ممكن الرسم عليها من خلال set_app_paintable .
    https://lazka.github.io/pgi-docs/#Gt..._app_paintable

    مثال عن Gtk.DrawingArea
    https://pygobject.readthedocs.io/.../cairo_integration.html

    أخيرا كل ما ذكر هو نظري ومختصر لتقريب الصورة أما التنفيذ شيء أخر تحتاج أن تتابع بعض ال Tutorial و وثائق المكتبات المذكورة لأن بعض الأشياء لن تتعلمها إلا من التجرية والخطأ مثلا حجم الذي تريد رسمه يجب ان يكون نسبتا لحجم ما ترسم عليه حتى عند تغير حجم ما ترسم عليه مثلا قام المستخدم بتصغير أو تكبير النافذة عندها يتغير حجم ما رسمته أيضا ويكون متناسب مع الحجم الجديد لما ترسم عليه ,هتاك أيضا بعض التفاصيل الأخرى ...إلخ .


  • #2
    أحسنت أخي
    موضوع الرسم مهم، وتحتاج مكتبة القاهرة في الاستخدام المتقدم لجتك مثل تصميم ودجات جديدة، وكثيرا ما تحتاجه في التطبيقات المخصصة للأطفال وأمثالها (والتي لا تستخدم فيها الودجات أساسا فقط رسومات)

    طبعا مشروع مكتبة القاهرة مشروع أساسي لكل من gtk+ و gnustep حيث يوفر أساليب جيدة ومحمولة للرسم وتكامل جيد مع الخطوط

    بالتوفيق
    لم تفهم شرحا ما ؟ تحتاج مساعدة تفاعلية في لينكس؟ لديك استفسار ؟آو حتى لديك وقت فراغ؟ تفضل لقناة التواصل الحي http://webchat.freenode.net/?channels=linuxac&prompt=1

    تعليق

    يعمل...
    X