Rom 再開発 no6

角度計をスマホアプリ内で作図してみました。

抜粋

 RectF oval = new RectF(2, 2, 510, 510);

paint.setColor(Color.argb(75, 255, 255, 255));

paint.setStyle(Paint.Style.FILL);

canvas0.drawArc(oval, 0, 360, true, paint);

paint.setStrokeWidth(4);

paint.setColor(Color.argb(255, 0, 0, 0));

paint.setStyle(Paint.Style.STROKE);

canvas0.drawArc(oval, 0, 360, true, paint);

int nm = 0,mn = 0;

for (int i = 0; i < 360; i++) {

paint.setColor(Color.argb(255, 0, 0, 0));

paint.setStrokeWidth(1);

nm = i % 10;

mn = i % 45;

if(nm == 0){paint.setStrokeWidth(3);nm = 20;paint.setColor(Color.argb(255, 255, 0, 0));}

else if(nm == 5){paint.setStrokeWidth(2);nm = 15;paint.setColor(Color.argb(255, 0, 153, 255));}

if(mn == 0){nm = 30;paint.setStrokeWidth(4);}

canvas0.drawLine(256, 0, 256, nm + 10, paint);

if(mn == 0){paint.setColor(Color.argb(255, 0, 0, 0));

// 中心座標

float centerX = 256;

float centerY = 70;

// 描画する文字列

int txti = i;

if(i > 180){txti = 360 - i;}

String text = "" + txti;

// テキスト用ペイントの生成

Paint textPaint = new Paint( Paint.ANTI_ALIAS_FLAG);

textPaint.setTextSize(50);

textPaint.setColor( Color.BLACK);

FontMetrics fontMetrics = textPaint.getFontMetrics();

// 文字列の幅を取得

float textWidth = textPaint.measureText( text);

// 中心にしたいX座標から文字列の幅の半分を引く

float baseX = centerX - textWidth / 2;

// 中心にしたいY座標からAscentとDescentの半分を引く

float baseY = centerY - (fontMetrics.ascent + fontMetrics.descent) / 2;

// テキストの描画

canvas0.drawText( text, baseX, baseY, textPaint);

}

matrixa.setRotate(1, 256, 256);

canvas0.concat(matrixa);



こんな感じになりました。

和鍼灸院式 android & ardiuno をいじる

0コメント

  • 1000 / 1000