الأربعاء، 26 مايو 2010

مقدمة في انشاء واجهة مستخدم منخفضة المستوى - الجزء الثاني

تنسيق الخطوط
يوجد تنسيقان مختلفان للخطوط وهما:
  • Solid
  • Dotted
ويمكن استخدامهما عن طريق ال setStrokeStyle method داخل الفئة Graphics كالتالي:
public void paint(Graphics g) {
 g.drawRect(20, 10, 35, 35);
 g.setStrokeStyle(Graphics.DOTTED);
 g.drawRect(20, 60, 35, 35);
}

في المثال السابق سوف يتم رسم مربع ولكن حدود المربع سوف ترسم بخط متقطع بسبب تغيير التنسيق. 

رسم النصوص
يوجد العديد من ال methods التي سةف تساعدك على رسم النصوص على الشاشة وجميعها موجودة داخل الفئة Graphics:
  • public void drawChar(char character, int x, int y, int anchor)
  • public void drawChars(char[] data, int offset, int length,int x, int y, int anchor)
  • public void drawString(String str, int x, int y, int anchor)
  • public void drawSubstring(String str, int offset, int len,int x, int y, int anchor)
جميع القيم الممررة لل methods واضحة وبسيطه الا أخر قيمة وهي ال anchor. هذه القيمة هي عبارة عن النقطة المرجعية للرسم والتي يجب أن تنطبق عليها قيم ال x و y في جميع ال methods.


قيم ال anchor هي عباره عن عملية Bitwise Or بين قيمة المحاذاة الأفقيه والتي يمكن أن تكون ( LEFT, HCENTER, RIGHT ) وبين قيمة المحاذاة العمودية والتي يمكن أن تكون ( TOP, BASELINE, BOTTOM ).

الأن لنفترض أنك أعطيت احدى ال methods السابقة القيم التالية:
x = 10
y = 5
anchor = Graphics.LEFT | Graphics.TOP

سيرسم النص بحيث أن زاويه المربع المحيطة بالنص من الأعلى واليسار سوف تنطبق على النقطة ( 10,5 ).

مثال
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.*;

public class TextDrawing extends MIDlet implements CommandListener {
    Command cmdExit = new Command( "Exit", Command.EXIT, 0 );

    public void startApp() {
        TextCanvas canvas = new TextCanvas();
        canvas.addCommand( cmdExit );
        canvas.setCommandListener( this );
        Display.getDisplay(this).setCurrent( canvas );

    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
        notifyDestroyed();

    }
    
}

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;

public class TextCanvas extends Canvas {
    public void paint(Graphics g) {
        int w = getWidth();
        int h = getHeight();
        g.setColor(0xffffff);
        g.fillRect(0, 0, w, h);
        g.setColor(0x000000);

        g.drawString("TOP_LEFT", 0, 0, Graphics.TOP | Graphics.LEFT);
        g.drawString("TOP_RIGHT", w, 0, Graphics.TOP | Graphics.RIGHT);
        g.drawString("BOTTOM_LEFT", 0, h, Graphics.BOTTOM | Graphics.LEFT);
        g.drawString("BOTTOM_RIGHT", w, h, Graphics.BOTTOM | Graphics.RIGHT);

        g.drawString("JME World", w / 2, h / 2, Graphics.BASELINE | Graphics.HCENTER);
    }
    
}

ليست هناك تعليقات:

إرسال تعليق