110,571
社区成员
发帖
与我相关
我的任务
分享
//网格数(不计边缘)
float div;
float pos = 0F;
//先画 垂直 方向
//可以少画一根线
div = (float)w / (float)gridWidth + 1;
for (int i = 0; i < (int)div; i++)
{
pos += gridWidth;
g.DrawLine(penGrid, pos - offset, 0, pos - offset, h);
}
//画 水平 方向
div = (float)h / (float)gridHeight;
pos = 0F;
for (int i = 0; i < (int)div; i++)
{
pos += gridHeight;
g.DrawLine(penGrid, 0, pos, w, pos);
}
//从 0 到 w 绘制
int len = w;
//根据绘制方式
if (chartMode == StatusChart.ChartMode.Histogram)
{
for (int i = 0; i < len; i++)
{
g.DrawLine(p, i, h - val[i], i, h);
}
g.DrawLine(p, len, h - val[len - 1], len, h);
}
else
{
len--;
for (int i = 0; i < len; i++)
{
g.DrawLine(p, i, h - val[i], i + 1, h - val[i + 1]);
}
len++;
g.DrawLine(p, len - 1, h - val[len - 2], len, h - val[len - 1]);
}
//更新网格偏移
//只有启用了网格移动才处理
if (gridShiftting)
{
iOffset += gridShifttingIncrement;
iOffset %= gridWidth;
}
//更新图形(整体左移)
//必须在这里而不能在画图的同时移动,
//若在画图中移动,则当画面被遮挡(OnPaint)事件不发生时无法更新
int len = w;
for (int i = 0; i < len; i++)
{
//判断数组越界
if (i < len - 1)
{
val[i] = val[i + 1];
}
else
{
val[len - 1] = currentValue;
//break;
}
}
//val[len] = currentValue;
Invalidate();