【Java开源代码栏目提醒】:网学会员在Java开源代码频道为大家收集整理了Arc_Canvas.java提供大家参考,希望对大家有所帮助!
package ch05;
import java.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
public class Arc_Canvas
extends GameCanvas {
//获取绘制上下文
Graphics g = getGraphics();
//声明一个代表弧起始角度的int型属性变量
int startAngle = 0;
//声明一个代表弧终止角度的int型属性变量
int arcAngle = 0;
//变量w和h为模拟器的当前屏幕宽度和高度
int w = getWidth();
int h = getHeight();
//构造器
public Arc_Canvas() throws IOException {
//支持按键事件
super(false);
setTitle("绘制弧形实例");
}
//启动绘制
public void start() {
render(g, 0, 0);
}
/*
3.绘制方法
*/
void render(Graphics g, int startAngle, int arcAngle) {
//填充背景色
g.setColor(255, 255, 255);
g.fillRect(0, 0, w, h);
//绘制椭圆所在的矩形框
g.setColor(0x00ff00);
g.drawRect(w / 4, h / 4, w / 2, h / 2);
//绘制弧所在的椭圆
g.setColor(0xff0000);
g.drawArc(w / 4, h / 4, w / 2, h / 2, 0, 360);
//绘制填充弧
g.setColor(0x0000ff);
g.fillArc(w / 4, h / 4, w / 2, h / 2, startAngle, arcAngle);
flushGraphics();
}
//响应连续按键事件
public void keyRepeated(int key) {
keyPressed(key);
}
/*
4.响应按键事件
*/
public void keyPressed(int key) {
int action = getGameAction(key);
switch (action) {
case LEFT:
if (startAngle > 350) {
startAngle = 0;
}
else {
startAngle += 10;
}
break;
case RIGHT:
if (startAngle < 10) {
startAngle = 0;
}
else {
startAngle -= 10;
}
break;
case UP:
if (arcAngle > 350) {
arcAngle = 0;
}
else {
arcAngle += 10;
}
break;
case DOWN:
if (arcAngle < 10) {
arcAngle = 0;
}
else {
arcAngle -= 10;
}
break;
default:
return;
}
render(g, startAngle, arcAngle);
}
}