【وصف المشكلة】
غالبًا ما نرى بعض أمثلة التمرير ، مثل محتوى صفحة الويب في متصفح UC. عندما يكون هناك الكثير من المحتوى ، فمن المعقول استخدام ترقيم ترقيم التمرير. في الرسم في قماش ، يتم اقتطاع المحتوى الزائد. كيف تتحقق عرض ترقيم ترقيم تراجع؟
【مبدأ】
هناك وظيفة تحويل الإحداثيات في جافام. عندما يتم تشغيل الحدث الرئيسي المقابل ، ندعه يعرض الصفحة المقابلة وتمرير شريط التمرير إلى الموضع المقابل.
【قائمة الكود】
showhelp.javapackage com.token.view ؛ . token.util.UIController; import com.token.view.components.*; public class ShowHelp extends GameCanvas { private UIController controller; private Grap hics graphics; private Font ft; private int width; private int height; private Menu menu; private رأس Backgroud الخاص ؛ True) ؛ 0 ؛ ، "" ، "العودة") ؛ Points Display ؛ /N " +" عرض صفحة SCROLL ؛ عرض صفحة التمرير ؛ عرض صفحة التمرير ؛ عرض الترحيل ؛ عرض الترحيل ؛ عرض الترحيل ؛ عرض الترحيل ؛ طول*ft.gethe ight ()/(Height-Head.Menuheight-Menu.Menuheight-2*Margin) +1 ؛ ) *metheight () ؛ .menuheight+الهامش ، العرض ، bodyheight) ؛ ، i*ft.getheight () Head.Menuheight +Graphics.Top | System.out.println (Graphics.getTranslatey () ؛ Head.Menuheight ، 2 ، Barheight) ؛ keycode) {//system.out .eventid.event_main_ index> 0) {CurrentPageInd ؛ /dir = 0 ؛
* يرجى الرجوع إلى Javame Serialization (3) لـ UIController - تحدث أيضًا عن نمط تصميم MVC ، لذلك لن أكرره هنا.
【تحليل】
1 سلسلة تقسيم
info info_wrap1 [] = stringDealMethod.format (info ، width-15 ، ft) ؛
للحصول على تفاصيل ، يرجى الرجوع إلى Javame Serialization (4) - رسم نص لخط الخط التلقائي
2 تجنب اقتطاع الكلمات
كيفية رسم خط كامل من النص في منطقة محددة دون اقتطاع النص بسبب التغييرات في الخط أو ارتفاع الشاشة ، مما تسبب في أن يكون للنص "كلمات نصف مقطوعة"؟
bodyheight = ((int) (Height-head.menuheight-menu.menuheight) /ft.getheight ())*ft.getheight () ؛
بعد المعالجة المذكورة أعلاه ، سيكون ارتفاع الجسم لمنطقة التمرير دائمًا مضاعفًا صحيحًا لارتفاع الخط ، حتى لا تحدث مشكلة اقتطاع الكلمات المذكورة أعلاه.
3 ارسم النص
لـ (int i = 0 ؛ i <info_wrap1.length ؛ i ++) {graphics.drawString (info_wrap1 [i] ، 5 ، i * ft.getheight ()+head.menuheight+margin ، graphics.to p | graphics.left) ؛
4 تنسيق التحول
graphics.cliprect (0 ، head.menuheight+margin ، width ، bodyheight) ؛
بعد رسم النص ، قم بتحويل الإحداثيات مرة أخرى.
graphics.translate (0 ، -dir*currentPageIndex*bodyheight) ؛
5 ارسم أشرطة التمرير
private void drawscrollbar () color .selectbg) ؛
6 التعامل مع الأحداث
عند اكتشاف حدث مطبعة مفتاح ، يتم تنفيذ عملية دوران الصفحة.
keypressed void (int keycode) {//system.out.println chode) ؛ . 1 ؛ } {// dir = 0 ؛
يمكن أن تكتشف طريقة المثال بشكل متكيف عرض وطول الشاشة ، وتوصيل النص وفقًا لحجم الخط وعرضه على الأثر.
صورة عرض التمرير