C# GDI+绘图(四)实现网格绘制,并填充相应的表格内容

这是为了实现在项目中的功能实现的一个Demo,在完成这个Demo后,我将其直接移植到了项目中,进行数据合并后,一切完美运行,

 

废话不多说,直接上图:

这里给出部分主要代码,

构造函数:

public uc_layout()
        {
            InitializeComponent();

            InitializeDrawResources();
            StartRow = startRow;
            DrawAll();

            this.SizeChanged += (s, w) =>
            {
                DrawAll();
            };
            this.MouseDown += (s, e) =>
                {
                    lastRow = e.Y / BlockHeight - 1+startRow;//确定行的位置
                    lastCol = e.X / BlockWidth - 1;
                    if (lastCol >= 0 && lastCol <= 7&&lastRow>=0&&lastRow<=63)
                    {
                        int index = 8 * (lastRow) + lastCol;//确定信号的startbit
                        if (list.Contains(index))//此处判断是否按下了信号
                        {
                            startBit = list.Min();//若是,则获取按下的信号
                            MouseIsDown = true;
                            DrawAll();
                        }
                    }
                };
            this.MouseUp += (s, e) =>
                {
                    MouseIsDown = false;
                    this.Cursor = Cursors.Default;
                };
            this.MouseMove += uc_layout_MouseMove;
        }

鼠标移动时,数据重绘,用MouseMove事件来控制,如下:

void uc_layout_MouseMove(object sender, MouseEventArgs e)
        {
            int mouseRow = e.Y / BlockHeight - 1+startRow;//确定鼠标移动到的行
            int mouseCol = e.X / BlockWidth - 1;
            if (MouseIsDown)
            {
                if (mouseRow!=lastRow||mouseCol!=lastCol)
                {
                    //lastRow = 7;
                    //lastCol = 6;
                    int difRow = mouseRow - lastRow;
                    int difCol = mouseCol - lastCol;
                    //int oldFirst = list.Min();
                    //int newFirst = oldFirst + 8 * difRow + difCol;
                    int newFirst = startBit + 8 * difRow + difCol;

                    lastRow = mouseRow;
                    lastCol = mouseCol;

                    if (this.Cursor!=Cursors.SizeAll)
                    {
                        this.Cursor = Cursors.SizeAll;
                    }
                    startBit = newFirst;
                    //if (startBit + list.Count > (startRow + 8) * 8 - 1)                    if (startBit > (startRow + 8) * 8 - 1)                    {
                        if (startRow<maxRow-8)
                        {
                            startRow++;
                        }
                    }
                    else if (startBit<startRow*8)
                    {
                        if (startRow>0)
                        {
                            startRow--;
                        }
                    }
                    list.Clear();
                    for (int i = 0; i < 6; i++)
                    {
                        list.Add(startBit + i);
                    }
                    DrawAll();
                }
            }
        }

以及画笔初始化代码

GrayBrush_G = new SolidBrush(Color.FromArgb(200, 200, 200));
            OrangeBrush_G = new SolidBrush(Color.FromArgb(190, 165, 210));
            DeepGrayBrush_G = new SolidBrush(Color.FromArgb(50, 50, 50));
            BlackBrush_G = new SolidBrush(Color.Black);
            BigFont_G = new Font("宋体", 12, FontStyle.Bold);
            SmallFont_G = new Font("宋体", 10);
            OverLayFont_G = new Font("宋体", 10, FontStyle.Bold);
            GrayPen_G = new Pen(Color.FromArgb(200, 200, 200), 1);
            BlackPen_G = new Pen(Color.FromArgb(0, 0, 0), 1);
            CenterSF_G = new StringFormat() { LineAlignment = StringAlignment.Center, Alignment = StringAlignment.Center, FormatFlags = StringFormatFlags.NoWrap, Trimming = StringTrimming.Character };

想要进阶学习的,可以在这里C# GDI+实现网格绘制,并显示内容 进行下载,项目编译通过,vs2012编写,下载有问题的,可以联系我。

这里给出得是升级版,通过滚动条来控制显示的行数,使绘制的表格动态刷新,可下载得代码中包含前三篇中的代码案例。

关注下方公众号,回复GDI+网格绘制 或 截图 即可免费获取源代码


--------------------------------------

公众号:攻城狮客栈

CSDN:画鸡蛋的不止达芬奇

 

更多精彩内容,请微信搜索攻城狮客栈 或扫描下方二维码

                                                                 

让我们一起变的更优秀。


 

 

 

描述 ESC 模块是非军用无人机中非常重要的子系统,用户需要更高效的机型,以实现更长的飞行时间、更好的动态行为和更加平顺、稳定的性能。这一设计采用了普遍用于无人飞行器 (UAV) 或无人机的电子调速器 (ESC)。 速度控制通过无传感器的方式完成,使用 FOC 速度控制对电机进行了测试,高达 1.2kHz 电气频率(12kRPM,6 极对电机)。我们的无人机 ESC 高速无传感器 FOC 参考设计拥有一流的 FOC 算法实施,可实现更长的飞行时间、更佳的动态性能,且具有更高的集成度,因此电路板尺寸更小,BOM 组件更少。无传感器高速 FOC 控制使用 TI 的 FAST:trade_mark: 软件观测器,利用了 InstaSPIN-Motion:trade_mark: C2000:trade_mark: LaunchPad 和 DRV8305 BoosterPack。 特性 InstaSPIN-FOC:trade_mark: 无传感器 FOC 可实现更高的动态性能。经测试高达 12,000 RPM(使用 3 节锂聚合物电池) 高动态性能:在不到 0.2 s 的时间内达到 1 kRPM 到 10 kRPM(电气频率 100Hz 至 1kHz)转速,可实现高性能偏转和俯仰动作 适于完成翻转动作的快速翻转能力 由于块交换上更高的 FOC 效率,可实现更长的飞行时间 更高的 PWM 开关频率(经测试高达 60kHz),可针对低电感高速电机降低电流/扭矩纹波,并且可以避免超声波传感器 由于 InstaSPIN-FOC 的自动电机参数识别,缩短了上市时间:自动调优无传感器 FOC 解决方案 针对绕组电阻变化进行电机温度估算,以保护电机在临时过载情况下免受损坏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值