我正在尝试在所有圆形表面上画线,我当前的形状看起来像:
我的错误尝试:
for (int i = 0; i < 24; i++) {
g.drawLine(xCenter - clockRadius + i , yCenter - clockRadius + i, xCenter - clockRadius + i + 5,
yCenter - clockRadius + i + 5);
}
我想画一个完整的时钟:
我怀疑你想绘制小段 - 刻度,以圆周为中心并从圆心指向。在这种情况下使用三角测量相似的时针绘图。
for (int i = 0; i < 24; i++) {
double ang = i * Math.Pi / 12;
g.drawLine((int) (xCenter + (clockRadius - 5) * Math.Cos(ang)),
(int) (yCenter + (clockRadius - 5) * Math.Sin(ang)),
(int) (xCenter + (clockRadius + 5) * Math.Cos(ang)),
(int) (yCenter + (clockRadius + 5) * Math.Sin(ang)));
}
您需要计算360度以上的点而不仅仅是24,所以你有半径和天使旋转(天使旋转从0到360)以获得(x,y)的正确点我们需要将天使的sin或cos乘以半径。
for (int i = 0; i < 360; i++) {
int x = (int) (clockRadius * Math.cos(i)) + xCenter;
int y = (int) (clockRadius * Math.sin(i)) + yCenter;
g.drawLine(x, y, x + 5, y + 5);
}
注意:为了获得更好的结果,您可能需要开发两个循环,一个用于右(180)部分,另一个用于左(180)部分。
编辑:为了获得正确的方向,你需要检查天使,例如:
int xV = 0, yV = 0;
if (i <= 90){
xV = 5;
yV = 5;
}