必要なときにもう一度あなたのところに行きます。へへへ 線、円、四角形、三角形を作るちょっとした SWT をやったことがあります。これを行うには、始点と終点を取り、これらすべての図を描きます。描画したら、x 軸と y 軸に移動したいと思います。私が困っているところの核心をここに置きます。キャンバス内にマウスリスナーを配置し、クリックして離すと音を聞いて線を作成します。//これはリスナーです
MasX.addListener(SWT.Selection, new Listener(){
public void handleEvent(Event event) {
SX += 1;
EX += 1;
canvas.redraw();
//gc.drawLine(SX, SY, EX, EY);
//crearLinea(SX,SY,EX,EY,gc);
}
});
//これが線画のメソッド
public void crearLinea(int SX, int SY, int EX, int EY, GC gc){
int x1 = SX;
int x2 = EX;
int y1 = SY;
int y2 = EY;
System.out.println(SX+" "+SY+" "+EX+" "+EY);
int cont = 0;
float dx, dy, m, y, x;
if (x1>x2){
int ax = x2;
int ay = y2;
x2 = x1;
x1 = ax;
y2 = y1;
y1 = ay;
}
dx = x2 - x1;
dy = y2 - y1;
m = dy/dx;
if (m>=-1&&m<=1){
y = y1;
//System.out.println(m+" "+x1+" "+y1+"....."+x2+" "+y2);
for (x = x1 ; x <= x2;x=x+5){
//if (x>=dot&&x<=dot+10||x>=dot*2&&x<=dot*2+10||x>=dot*3&&x<=dot*3+10){
gc.drawLine((int)x, (int)Math.round(y), (int)x, (int)Math.round(y));
y+=m*5;
//}
}
}
if(m>1){
x = x1;
//System.out.println(m+" "+x1+" "+y1+"....."+x2+" "+y2);
for (y = y1 ; y <= y2;y=y+3){
if (cont<=5){
//System.out.println(cont);
gc.drawLine((int)Math.round(x), (int)y, (int)Math.round(x), (int)y);
cont++;
}
if(cont>=10){
//System.out.println(cont);
cont=0;
}
if(cont>5){
//System.out.println(cont);
cont++;
}
x+=(1/m)*3;
}
}
if(m<-1){
x = x1;
//System.out.println(m+" "+x1+" "+y1+"....."+x2+" "+y2);
for (y = y1 ; y >= y2;y--){
if(y%10==0||y%8==0||y%12==0){
gc.drawLine((int)Math.round(x), (int)y, (int)Math.round(x), (int)y);
}
x-=(1/m);
}
}
}
それが私に与えるエラーはヌルポインター例外であり、gc.drawline() を指しています
誰かが私を助けてくれることを願っています:D