سؤال

وهكذا لدي tile.png صورة البلاط وأنا أحاول أن إنشاء خريطة المغطى في جميع أنحاء النافذة. أنا بناء هذا كشفرة. هذا ما يبدو لي طريقة الطلاء مثل، ولكن ليست فعالة. عند تشغيل التطبيق الصغير يستغرق حوالي 2 ثانية، ورسمت الشاشة بأكملها من اليسار إلى اليمين مع الصورة، وليس كل ما صدر في وقت واحد. أيضا، كل شيء يبدو tile.png احد كبير بدلا من 40 حالات صغيرة من tile.png

public void paint(Graphics g)
{
    Image tile=getImg("tile.png");
    int width=this.getWidth();
    int height=this.getHeight();

    int x;
    int y;
    for (x=0; x<= width; x++)
    {
        for (y=0; y<= height; y++)
        {
            g.drawImage(tile, x, y, this);
        }
    }
}

وراجع للشغل الملف tile.png هو 10 × 10 بكسل، وهذا هو IMG الفعلي:

tile.png http://img12.imageshack.us/img12/1368/ tile.png

وتحرير: استخدام الكود ومن خلال تحسين صورة البلاط ط إصلاح هذا. وهنا بلدي جديد IMG البلاط في حالة أنه يساعد شخص ما:

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

المحلول

    for (x=0; x<= width / tileWidth; x++)
    {
            for (y=0; y<= height / tileHeight ; y++)
            {
                    g.drawImage(tile, x * tileWidth, y * tileHeight, this);
            }
    }

وتحتاج إلى يقابله عرض / ارتفاع من البلاط.

نصائح أخرى

وفقط كملاحظة جانبية، وربما كنت تريد الذهاب الى بدء التحقق بك "كليب منطقة" عند نقطة معينة وليس رسم الاشياء خارج تلك المنطقة. تم إعداد الشفرة بشكل جيد جدا للقيام بذلك.

ووالشيء الآخر الذي يمكن القيام به لتسريع العملية هو "الواق مزدوجة". إنشاء مكون حجم الخريطة، والدعوة getGraphics () لهذا المكون، تفعل كل ما تبذلونه الرسم لهذه الرسومات الجديدة وجوه، ثم مجرد رسم مكون الخاص بك إلى الرسومات الحقيقية وجوه مرت في طريقة الطلاء الخاص بك.

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

وجوجل جارى مزدوجة في جاوة لمزيد من المعلومات.

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