1mm ごとに線を表示し、10mm ごとに太い線を表示するグリッドを作成しようとしており、次のコードがあります。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1,
getResources().getDisplayMetrics());
float currentH = 0;
float currentW = 0;
int countX = 0;
int countY = 0;
DisplayMetrics metrics = getResources().getDisplayMetrics();
while (currentW < metrics.widthPixels) {
if(countX % 10 == 0){
this.paint.setStrokeWidth(0.5f);
this.paint.setColor(getResources().getColor(R.color.GridGreenTens));
} else {
this.paint.setStrokeWidth(0.1f);
this.paint.setColor(getResources().getColor(R.color.GridGreen));
}
canvas.drawLine(currentW, 0, currentW, metrics.heightPixels, paint);
countX++;
currentW += px;
}
while (currentH < metrics.heightPixels) {
if(countY % 10 == 0){
this.paint.setStrokeWidth(0.5f);
this.paint.setColor(getResources().getColor(R.color.GridGreenTens));
} else {
this.paint.setStrokeWidth(0.1f);
this.paint.setColor(getResources().getColor(R.color.GridGreen));
}
canvas.drawLine(0, currentH, metrics.widthPixels, currentH, paint);
countY++;
currentH += px;
}
}
私の問題は、次のように表示されることです。
ご覧のとおり、太い線 (o.5f) は本来よりもはるかに頻繁に発生しています。どんな助けでも大歓迎です。