MIDlet API 2.0学习之:javax.microedition.lcdui.Graphics

Graphics
提供简单2D几何渲染功能。

Clipping

clip是在graphic对象目的区域中的像素集合,可以被graphic渲染操作改变。

每个Graphic对象都会有一个专门的clip。通过Graphic操作只能改变在clip以内的像素。clip以外的所有像素不会被任何Graphic操作改变。

clip通过用一个矩形来指定。应用应该用当前系统坐标系统的坐标来指定自己的clip。

把一个矩形指定为0宽高或者负的宽高也是合法的。这种情况下clip被认为是空的,就是说它内部不包含任何像素。因此,任何对这样一个clip的Graphic操作都不会使得任何像素被改变。

把一个clip指定地比目标区域大也是可以的。在超出目标区域的部分,不存在任何像素,在clip中但是超出目标区域的那部分就会被忽略。只有既在clip又包含在目标区域内的像素才有可能被Graphic操作锁改变。

在坐标系统中,像translate()这样的操作,不会改变clip。getClipX(), getClipY(), getClipWidth()和getClipHeight()方法返回一个通过setClip(如果调用过该方法)设置过的clip矩形。只有在将Graphic对象的目标区域边界和clip矩形贯穿起来之后,才可以用类似getclip方法来获取clip矩形。

如果一个Graphic操作受clip的影响,那么这个操作所涉及到的像素应该就是那些clip没有影响操作的那些像素。例如,考虑一个clip通过rectangle (cx, cy, cw, ch)来表示,并且一个点point (x1, y1)位于该矩形外部,另外一个点point (x2, y2)位于矩形内部。在如下代码片段中:
    g.setClip(0, 0, canvas.getWidth(), canvas.getHeight());
    g.drawLine(x1, y1, x2, y2); // 3
    g.setClip(cx, cy, cw, ch);
    g.drawLine(x1, y1, x2, y2); // 4 


语句4和3涉及到的像素应该是一样的。

你可能感兴趣的:(graphics)