绘制灰色编码

时间:2013-12-25 21:15:04

标签: c# winforms

我需要在面板上绘制一个灰色星座,如下所示。

enter image description here

直到现在我有一个存储grey encoding的列表。该列表存储一个绘制椭圆(星座)的符号对象,并在构造时采用三个参数... x和y位置以及灰色代码。

我需要在面板上绘制整个列表。必须遍历该列表,并且必须在面板上绘制每个sybmol。例如。为16符号。第一个符号将在位置0,0中绘制,y递增直到第四个符号。然后xOffset必须向右移动,以便在第四个符号的右侧绘制第五个符号。然后第六个高于第五个等等......一般来说,它们必须像正弦波一样被绘制..

        sb.SetLocation(x, y);
        gh.Controls.Add(sb);

        if (gh.Controls.Count % 4 == 0) { x += sb.Width; }
        y += sb.Height;

sb是Symbol类的一个实例。 上面的代码是绘制前四个符号但然后移动x然后我需要从下面画出符号..我需要以某种方式切换(y + = sb.Height)和(y - = sb.Height)当MODULO为0时,改变X偏移。任何想法,我该怎么办呢。感谢。

1 个答案:

答案 0 :(得分:0)

在某处定义一个变量以保存您的操作(+或 - )

bool sign=true;

然后绘制像这样的开关

if (gh.Controls.Count+4 % 8 == 0) sign = false;
if (gh.Controls.Count % 8 == 0) sign = true;

if (sign && gh.Control.Count % 4 != 0) y+= sb.height;
if (!sign && gh.Control.Count % 4 != 0) y -= sb.heighht;

这为您提供了模式:

计数 / y值

1 / +

2 / +

3 / +

4 /相同

5 / -

6 / -

7 / -

8 /同样