Java 2D - Java 2D - Wikipedia

Yilda hisoblash, Java 2D bu API rasm chizish uchun ikki o'lchovli grafikalar yordamida Java dasturlash tili. Har qanday Java 2D chizish operatsiyasi oxir-oqibat sifatida ko'rib chiqilishi mumkin to'ldirish a shakli yordamida bo'yamoq va kompozitsion natija ekran.

Tashkilot

Java 2D API va uning hujjatlari JDK 6 ning bir qismi sifatida yuklab olish uchun mavjud. Java 2D API sinflari JDK 6 da quyidagi paketlarga ajratilgan:

Asosiy tushunchalar

Ushbu ob'ektlar har bir Java 2D chizish operatsiyasining zaruriy qismidir.

Shakllari

A shakli Java 2D da ichki va tashqi tomonlarni belgilaydigan chegara. Piksellar shakl ichida chizish operatsiyasi ta'sir qiladi, tashqarida bo'lganlar ta'sir qilmaydi.

To'g'ridan-to'g'ri to'ldirishga harakat qilmoqda chiziqli segment piksellarning ta'sirlanishiga olib kelmaydi, chunki bunday shaklda pikselning o'zi yo'q. Buning o'rniga, ingichka to'rtburchak shaklda bir nechta piksel bo'lishi uchun ishlatilishi kerak.

Bo'yoqlar

A bo'yamoq hosil qiladi ranglar to'ldirish operatsiyasining har bir pikseli uchun ishlatilishi kerak. Eng oddiy bo'yoq java.awt.Color, bu barcha piksellar uchun bir xil rang hosil qiladi. Keyinchalik murakkab bo'yoqlar gradyan hosil qilishi mumkin, tasvirlar, yoki haqiqatan ham ranglarning har qanday kombinatsiyasi. Sariq rang yordamida dumaloq shaklni to'ldirish natijasida sariq rangli aylana hosil bo'ladi, shu bilan rasm hosil qiladigan bo'yoq yordamida bir xil dumaloq shaklni to'ldirganda tasvirning dumaloq kesmasi hosil bo'ladi.

Kompozitlar

Har qanday rasm chizish paytida a mavjud manba (bo'yoq tomonidan ishlab chiqarilgan piksellar) va a boradigan joy (allaqachon piksellar ekranda). Odatda, manba piksellari maqsad piksellarning ustiga oddiygina yoziladi, ammo kompozit ushbu xatti-harakatni o'zgartirishga imkon beradi.

Kompozit, manba va mo'ljallangan piksellarni hisobga olgan holda, yakuniy natijani beradi, natijada ekranda tugaydi. Eng keng tarqalgan kompozitsion java.awt.AlphaComposite, bu chizilgan piksellarni qisman shaffof deb hisoblashi mumkin, shunda maqsad piksellar ma'lum darajada ko'rsatiladi.

To'ldirish

Kimga to'ldirish shakl, birinchi qadam shaklga qaysi piksel tushishini aniqlashdir. To'ldirish jarayoni ushbu piksellarga ta'sir qiladi. Shaklning ichida va qisman tashqarisida joylashgan piksellarga, agar ta'sir qilsa, kamroq darajada ta'sir qilishi mumkin begonalashtirish yoqilgan.

Keyin bo'yoq har bir bo'yalgan piksel uchun rang hosil qilishni so'raydi. Yagona rangli plomba holatida har bir piksel bir xil rangga o'rnatiladi.

Kompozit bo'yoq hosil qilgan piksellarni oladi va ularni yakuniy natijani olish uchun ekrandagi piksellar bilan birlashtiradi.

Murakkab ob'ektlar

Ushbu ob'ektlarni yuqorida tavsiflangan oddiy narsalar nuqtai nazaridan o'z vazifalarini bajarayotgan deb qarash mumkin.

Transformatsiya

Har qanday Java 2D operatsiyasi a o'zgartirish, shunday qilib shakllar tarjima qilinishi, aylanishi, qirqilishi va chizilganida masshtablanishi mumkin. Faol konvertatsiya ko'pincha shaxsni o'zgartirish, bu hech narsa qilmaydi.

Transformatsiya yordamida to'ldirishni shunchaki yangi, o'zgartirilgan shaklni yaratish va keyinchalik bu shaklni to'ldirish deb hisoblash mumkin.

Qon tomir

Ga qo'shimcha ravishda to'ldirish operatsiya, Java 2D a beradi chizish operatsiya. To'ldirish shaklning ichki qismini chizish bilan birga, uning chizilgan rasmini chizadi. Kontur ingichka chiziq singari oddiy bo'lishi mumkin yoki har bir chiziq qirralarning yumaloq bo'lishi bilan kesilgan chiziq kabi murakkab bo'lishi mumkin.

Konturni yaratish uchun mas'ul bo'lgan ob'ekt qon tomir. Kirish shakli berilgan bo'lsa, zarba uning konturini ifodalovchi yangi shakl hosil qiladi. Masalan, cheksiz ingichka chiziqli segmentni (ichki qismi bo'lmagan holda) bir piksel kenglikdagi to'rtburchak ichiga urish mumkin.

Shuning uchun chizish operatsiyasini yangi, chizilgan ob'ektni yaratish va keyinchalik ushbu ob'ektni to'ldirish deb ta'riflash mumkin.

Texnik jihatdan zarba faqat kirish shaklini qabul qilish va yangi shaklni yaratish uchun talab qilinadi. Java 2D bilan ta'minlangan zarbani amalga oshirish yuqorida tavsiflangan kontur qoidalarini amalga oshiradi, ammo maxsus yozilgan zarba xohlagan shaklni yaratishi mumkin.

Optimallashtirish

Kontseptual ravishda Java 2D-da to'g'ri qora chiziqni chizish chiziqli segmentni yaratish, uni hozirgi transformatsiyaga muvofiq o'zgartirish, ingichka to'rtburchak hosil qilish uchun silash, ta'sirlangan piksellarni hisoblash uchun ushbu shaklni so'rash, piksellar yordamida hosil qilish deb o'ylash mumkin. java.awt.Color.BLACK, so'ngra natijalarni ekranga qo'shib qo'ying.

Biroq, har bir chizilgan operatsiya uchun ushbu ketma-ketlik bosqichlarini bajarish juda samarasiz bo'ladi. Shu sababli Java 2D bu bosqichlarning ko'pini o'tkazib yuborish uchun umumiy rasmlarni optimallashtiradi. Agar bo'yoq oddiy tekis rang bo'lsa, masalan, uni bo'yash uchun ranglar ro'yxatini yaratish uchun buyruq berishning hojati yo'q. Xuddi shu tarzda, agar standart to'liq shaffof bo'lmagan kompozitsiyadan foydalanilsa, aslida uni kompozitsion operatsiyani bajarishni so'rash kerak emas va kuch sarflashga olib keladi.

Java 2D uni bajarish uchun zarur bo'lgan minimal ish hajmini bajaradi ko'rinadi go'yo u har bir operatsiya uchun ushbu bosqichlarning barchasini bajarayotgandek, shuning uchun ham katta moslashuvchanlikni va yuqori ishlashni saqlab qoladi.

Belgilangan joy

Oddiylik uchun ushbu maqolada keltirilgan matnli misollar ekran maqsad qurilmasi deb taxmin qildi. Biroq, boradigan joy har qanday narsa bo'lishi mumkin, masalan, printer, xotira tasviri yoki hatto Java 2D grafik buyruqlarini qabul qiladigan va ularni tarjima qiladigan ob'ekt. vektorli grafik rasm fayllari.

Java2D / OpenGL-ning o'zaro ishlashi

Beri Java SE 6, Java2D va OpenGL masalan, Tugmachadagi piktogramma o'rniga animatsion 3D grafika chizish imkonini beradigan bir-biriga mos keladigan ish bo'ldi (qarang) JOGL ).

Shuningdek qarang

Adabiyotlar

Tashqi havolalar