这是为了实现在项目中的功能实现的一个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;//确定信号的startbitif (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:画鸡蛋的不止达芬奇

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

让我们一起变的更优秀。


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

  1. GDI+绘图基础,绘制表格

    GDI+绘图基础 编写图形程序时需要使用GDI(图形设备接口Graphics Device Interface),从程序设计的角度看,GDI包括两个部分:GDI对象和GDI函数. GDI对象定义了GD ...

  2. MATLAB三维绘图(四)绘制特殊的三维图

    MATLAB三维绘图(四)绘制特殊的三维图 1.使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 ...

  3. MFC中的GDI绘图

    MFC中的GDI绘图 目录(?)[+] 什么是GDI 什么是DC MFC中与GDI有关的类 获取设备环境 设置坐标映射 创建绘图工具并选入DC 调用DC绘图函数绘图 三坐标映射实例 一.关于GDI的基 ...

  4. Windows高级工程师:GDI+绘图;基础入门大全

    Windows GDI绘图基础知识 一.Windows可以画直线.椭圆线(椭圆圆周上的曲线)和贝塞尔曲线. 7 个画线函式是: (1)画直线 LineTo    BOOL LineTo(HDC hdc ...

  5. GDI+绘图轻松入门[5]-绘图坐标的理解和应用

    我们都知道,有大约五种方式可以获得一个坐标位置,他们分别是new point.PointToClient.PointToScreen,Location及控件鼠标事件传递的坐标.为了了解绘图坐标,我们事 ...

  6. windows编程之GDI绘图 -- 实验3-1

    windows编程之GDI绘图 – 实验3-1 文章目录 windows编程之GDI绘图 -- 实验3-1 @[toc] 1.实验名称 2.实验目的 3.实验的步骤和方法 4.代码实现 5.思考题 6 ...

  7. C#使用GDI绘图九宫格与方位(2)增加点击查看详细,接上篇

    上一篇我们已经绘制了九宫格与方位的显示 C#使用GDI绘图九宫格与方位_斯内科的博客-CSDN博客 这里我们为九宫格的每一个图片都增加Click事件,用于点击查看详细描述 新建窗体FormNineGr ...

  8. VC++ GDI绘图操作

    文章目录 GDI绘图 DC 获取DC GetDC GetWindowDC函数 BeginPaint 和 EndPaint 函数 DC的释放 HDC和四个DC类 CDC和HDC CPaintDC CCl ...

  9. 使用bitblt提高GDI+绘图的效率(转)

    最近在做使用GDI+绘制K线界面发现传统的GDI+绘制方式效率比较低,根本无法满足K线界面及时刷新的速度要求. 所以做了个GDI+绘制图形界面的试验,改试验主要在一个600×600的区域内每隔10MS ...

最新文章

  1. 【C语言】实现strcat
  2. 如何做一个听话的 “输入框”
  3. ios 1 cocoa
  4. 找出连续最长数字串python_字符串中找出连续最长的数字字符串的实例代码
  5. 机械史上最复杂的巅峰之作,这才是最强大脑!
  6. cesium的clock开始,结束,控制速率
  7. 怎么钢枪_和平精英有战术钢枪和无脑冲有何区别?你们怎么看待这个问题
  8. 题解-bzoj3901 棋盘游戏
  9. 华为服务器备件系统,华为企业业务中国区经销商备件系列宣传(共8期)
  10. 华为海思智能手机处理器及其参数对比
  11. 《JAVA语言程序设计》上课笔记
  12. 产品经理的私房菜 - 腾讯产品模型 - 学习能力篇
  13. vue的el-tree实现部门人员的tree展示选择,包括根据已有id进行默认选中设置
  14. 计算机控制中的pid是什么意思,PID 是什么意思
  15. ae渲染存在偏移_E3依旧是最好选择.千元游戏渲染主机该如何搭配
  16. DMHS搭建、以及DMHS 双向同步
  17. YUI 3 学习笔记:loader
  18. FM-分解机模型详解
  19. 利用 Google API 调用谷歌地图 演示1
  20. varbinary 转换成 varchar

热门文章

  1. 算法:根据一个开关确定一百人是否都进入过房间
  2. Photoshop照片转手绘效果动作分享
  3. spring cloud gateway网关和链路监控
  4. 网络计算机抗震计算阻尼比,20170907学期建筑结构抗震课程机考答案
  5. keil 生成三角波dac0832_弹性波,时域显式接口简介
  6. tcp_tw_reuse 为什么默认是关闭的?
  7. 科幻风高绩效团队建设课程PPT模板
  8. 第一次单元测验参考答案详解 mooc程序设计入门——翁凯
  9. 微方摄像头监控系统 v8.00 天空站特别版 下载
  10. WebMatrix的安装