سؤال

أحاول عرض صورة أقوم بتحميلها من pixbuf (من البيانات في الذاكرة) ويتم تحديث الصورة في كل مرة (حيث يتغير pixbuf أيضًا مع مرور الوقت). سؤالي هو أنه نظرًا لأن النافذة ستحتوي فقط على الصورة (التي يتم تحديثها بشكل دوري) ، هل أحتاج إلى سحب GTK أو منطقة رسم لهذا الغرض؟ أو هل يمكنني ببساطة عرض الصورة في النافذة؟ خيار آخر هو استخدام القاهرة. هل يمكن لأي شخص أن يقترح طريقة جيدة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

قم بتحميل الملف في pixbuf ، يوجد مُنشئ new_from_file أو شيء من أجل ذلك.

نعم ، قم بإنشاء Drawarea وعصاه في صندوق أو شيء ما في مكان ما.

بعد ذلك ، احصل على نافذة Drawingarea Parent (ستكون هناك طريقة مثل get_window أو شيء من أجل ذلك). سيكون هذا قابلاً للسحب.

إنشاء GC (سياق الرسومات) - لا تحتاج إلى تعيين أي قيم خاصة فيه.

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

اتصل بهذه الطريقة draw_pixbuf كلما قمت بتحديث pixbuf بطريقة أو بأخرى.

قد ترغب أيضًا في التفكير في استخدام pixmap بدلاً من ذلك ، إذا لم تقم بتحميله من ملف وتعتزم الرسم عليه. بيكسل خريطة نفسها قابلة للسحب ، بحيث يمكنك رسم المستطيلات والأشياء مباشرة عليها. الفرق الحقيقي الوحيد في عرضه على Drawarea هو أنك تحتاج إلى استدعاء طريقة Draw_drawable بدلاً من draw_pixbuf على السحب.

لاحظ أنني أكتب هذا من ذاكرة استخدام Perl/GTK2 ، وقد لا يتم تعيينها بشكل نظيف إلى أي لغة تستخدمها.

نصائح أخرى

أ GtkImage سيعمل بشكل جيد ، ويكون أبسط من كل الأشياء التي أدرجتها ؛-)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top