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;//确定信号的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+绘图(四)实现网格绘制,并填充相应的表格内容相关推荐
- GDI+绘图基础,绘制表格
GDI+绘图基础 编写图形程序时需要使用GDI(图形设备接口Graphics Device Interface),从程序设计的角度看,GDI包括两个部分:GDI对象和GDI函数. GDI对象定义了GD ...
- MATLAB三维绘图(四)绘制特殊的三维图
MATLAB三维绘图(四)绘制特殊的三维图 1.使用pie3绘制三维饼状图,示例: %% 绘制三维饼图 clear all; x=[0.2 0.1 0.25 0.15 0.16]; y=[3 5.5 ...
- MFC中的GDI绘图
MFC中的GDI绘图 目录(?)[+] 什么是GDI 什么是DC MFC中与GDI有关的类 获取设备环境 设置坐标映射 创建绘图工具并选入DC 调用DC绘图函数绘图 三坐标映射实例 一.关于GDI的基 ...
- Windows高级工程师:GDI+绘图;基础入门大全
Windows GDI绘图基础知识 一.Windows可以画直线.椭圆线(椭圆圆周上的曲线)和贝塞尔曲线. 7 个画线函式是: (1)画直线 LineTo BOOL LineTo(HDC hdc ...
- GDI+绘图轻松入门[5]-绘图坐标的理解和应用
我们都知道,有大约五种方式可以获得一个坐标位置,他们分别是new point.PointToClient.PointToScreen,Location及控件鼠标事件传递的坐标.为了了解绘图坐标,我们事 ...
- windows编程之GDI绘图 -- 实验3-1
windows编程之GDI绘图 – 实验3-1 文章目录 windows编程之GDI绘图 -- 实验3-1 @[toc] 1.实验名称 2.实验目的 3.实验的步骤和方法 4.代码实现 5.思考题 6 ...
- C#使用GDI绘图九宫格与方位(2)增加点击查看详细,接上篇
上一篇我们已经绘制了九宫格与方位的显示 C#使用GDI绘图九宫格与方位_斯内科的博客-CSDN博客 这里我们为九宫格的每一个图片都增加Click事件,用于点击查看详细描述 新建窗体FormNineGr ...
- VC++ GDI绘图操作
文章目录 GDI绘图 DC 获取DC GetDC GetWindowDC函数 BeginPaint 和 EndPaint 函数 DC的释放 HDC和四个DC类 CDC和HDC CPaintDC CCl ...
- 使用bitblt提高GDI+绘图的效率(转)
最近在做使用GDI+绘制K线界面发现传统的GDI+绘制方式效率比较低,根本无法满足K线界面及时刷新的速度要求. 所以做了个GDI+绘制图形界面的试验,改试验主要在一个600×600的区域内每隔10MS ...
最新文章
- 【C语言】实现strcat
- 如何做一个听话的 “输入框”
- ios 1 cocoa
- 找出连续最长数字串python_字符串中找出连续最长的数字字符串的实例代码
- 机械史上最复杂的巅峰之作,这才是最强大脑!
- cesium的clock开始,结束,控制速率
- 怎么钢枪_和平精英有战术钢枪和无脑冲有何区别?你们怎么看待这个问题
- 题解-bzoj3901 棋盘游戏
- 华为服务器备件系统,华为企业业务中国区经销商备件系列宣传(共8期)
- 华为海思智能手机处理器及其参数对比
- 《JAVA语言程序设计》上课笔记
- 产品经理的私房菜 - 腾讯产品模型 - 学习能力篇
- vue的el-tree实现部门人员的tree展示选择,包括根据已有id进行默认选中设置
- 计算机控制中的pid是什么意思,PID 是什么意思
- ae渲染存在偏移_E3依旧是最好选择.千元游戏渲染主机该如何搭配
- DMHS搭建、以及DMHS 双向同步
- YUI 3 学习笔记:loader
- FM-分解机模型详解
- 利用 Google API 调用谷歌地图 演示1
- varbinary 转换成 varchar