2

定義済みのチャートでは使用したい値のタイプを処理できないため、独自のチャートをコーディングしています。線には、幅の異なる色付きのラベルを使用しています。この方法を使用しているチャートを印刷するには:

labelSize = new Size();
labelSize.Height = 35;
Size maxSize = new Size(214783647, 500);

labelSize.Width = Convert.ToInt32(ShiftPts[i + 1].timeint - ShiftPts[i].timeint);
Label l1 = new Label();
l1.MaximumSize = maxSize;
l1.BackColor = Color.Yellow;
Point LabelPoint = new Point(tempStartX, StartPositionY);
//Point LabelPoint = new Point(tempStartX, StartPositionY);
l1.Size = labelSize;
l1.Location = LabelPoint;
l1.Text = ShiftPts[i].Status;
tempStartX = tempStartX + labelSize.Width;

BoxLine.Add(l1);

tempStartX変数は であり、intループティックごとに増加することがわかります。この変数の問題は、ラベルの幅が原因でマイナスになることです。390 を超える幅を指定しようとすると、幅が単純にマイナスになります。なぜそれが起こるのですか?

4

1 に答える 1

1

ShiftPts[i + 1].timeintより小さい場合はマイナスになりますShiftPts[i].timeintlabelSize.Width次に、この値を に割り当てますtempStartX

これは減算する唯一の場所のように見えるため、これが変数が負の値に設定される唯一の理由である可能性があります。

別の可能性は、それtempStartXがすでにマイナスになっていることです。

于 2013-06-18T14:10:55.863 に答える