资源简介
本例说明一种报表组件的实现方法。
原理:将各个表格元素,以图像的方式设置、添加到纸张画布上,生成图像,打印图像。
功能:
1、支持SQL Serrver、Access数据库,如需其他数据库,也可很方便的添加到代码中,自动获取数据表,在元素中可选择添加字段到报表中;
2、报表元素可自由拖放、设置大小、内容、字体、字体样式等(元素非PictureBox组件);
3、支持全程的“撤销”、“重做”;
4、可保存、读取报表文件;
5、预览、打印没加上去,原理就是根据元素生成一幅或多幅图像,再输出到打印机,自行修改添加。
这里说明一下,这只是个规划草稿,只是描述了一种报表组件的设计方式,所以代码写的较为繁琐、冗余,代码无委托线程等,所以比较容易看明白。
原理:将各个表格元素,以图像的方式设置、添加到纸张画布上,生成图像,打印图像。
功能:
1、支持SQL Serrver、Access数据库,如需其他数据库,也可很方便的添加到代码中,自动获取数据表,在元素中可选择添加字段到报表中;
2、报表元素可自由拖放、设置大小、内容、字体、字体样式等(元素非PictureBox组件);
3、支持全程的“撤销”、“重做”;
4、可保存、读取报表文件;
5、预览、打印没加上去,原理就是根据元素生成一幅或多幅图像,再输出到打印机,自行修改添加。
这里说明一下,这只是个规划草稿,只是描述了一种报表组件的设计方式,所以代码写的较为繁琐、冗余,代码无委托线程等,所以比较容易看明白。
/// <summary> /// 剪切复制粘贴组件操作 /// </summary> public class OperationObject { public bool isData { get; set; } // 是否有剪切复制粘贴数据 public Rectangle Region { get; set; } // 大小范围 public bool IsDragging { get; set; } // 能否拖动 public Point DraggingPoint { get; set; } // 组件拖动位置 public Bitmap Setimage { get; set; } // 组件图像 public int SetType { get; set; } // 组件类型 public bool isContent { get; set; } // 组件内是否有内容 public int Field_BandType { get; set; } // 栏目类型 public Bitmap Field_Img { get; set; } // 图像组件的图像 public string Field_Text { get; set; } // 文字 public string Field_TextFont { get; set; } // 字体 public int Field_TextFontSize { get; set; } // 字体大小 public FontStyle Field_TextFontStyle { get; set; } // 文字样式 public string Field_Align { get; set; } // 对齐方式 public int Field_ImgZoom { get; set; } // 图像缩放 public bool[] Field_BoxLine { get; set; } // 边框和斜线 public int Field_Shape { get; set; } // 形状的类型 } public static OperationObject operationObject; /// <summary> /// 组件操作记录 /// </summary> public class RecordObject { public int Num; // 序号 public Rectangle Region; // 大小范围 public bool IsDragging; // 能否拖动 public Point DraggingPoint; // 组件拖动位置 public Bitmap Setimage; // 组件图像 public int SetType; // 组件类型 public bool isContent; // 组件内是否有内容 public int Field_BandType; // 栏目类型 public Bitmap Field_Img; // 图像组件的图像 public string Field_Text; // 文字 public string Field_TextFont; // 字体 public int Field_TextFontSize; // 字体大小 public FontStyle Field_TextFontStyle; // 文字样式 public string Field_Align; // 对齐方式 public int Field_ImgZoom; // 图像缩放 public bool[] Field_BoxLine; // 边框和斜线 public int Field_Shape; // 形状的类型 public RecordObject( int _Num,Rectangle _Region, bool _IsDragging, Point _DraggingPoint, Bitmap _Setimage, int _SetType, bool _isContent, int f_BandType, Bitmap f_Img, string f_Text, string f_TextFont, int f_TextFontSize, FontStyle f_TextFontStyle, string f_Align, int f_ImgZoom, bool[] f_BoxLine, int f_Shape) { Num = _Num; Region = _Region; IsDragging = _IsDragging; DraggingPoint = _DraggingPoint; Setimage = _Setimage; SetType = _SetType; isContent = _isContent; Field_BandType = f_BandType; Field_Img = f_Img; Field_Text = f_Text; Field_TextFont = f_TextFont; Field_TextFontSize = f_TextFontSize; Field_TextFontStyle = f_TextFontStyle; Field_Align = f_Align; Field_ImgZoom = f_ImgZoom; Field_BoxLine = f_BoxLine; Field_Shape = f_Shape; } } public static List<List<RecordObject>> recordObject; /// <summary> /// 组件移动 /// </summary> public abstract class ADraggableGDIObject { public abstract Rectangle Region { get; set; } // 大小范围 public abstract bool IsDragging { get; set; } // 能否拖动 public abstract Point DraggingPoint { get; set; } // 组件拖动位置 public abstract Bitmap Setimage { get; set; } // 组件图像 public abstract int SetType { get; set; } // 组件类型 public abstract void OnPaint(PaintEventArgs e); // 重绘 public abstract bool isContent { get; set; } // 组件内是否有内容 public abstract int Field_BandType { get; set; } // 栏目类型 public abstract Bitmap Field_Img { get; set; } // 图像组件的图像 public abstract string Field_Text { get; set; } // 文字 public abstract string Field_TextFont { get; set; } // 字体 public abstract int Field_TextFontSize { get; set; } // 字体大小 public abstract FontStyle Field_TextFontStyle { get; set; } // 文字样式 public abstract string Field_Align { get; set; } // 对齐方式 public abstract int Field_ImgZoom { get; set; } // 图像缩放 public abstract bool[] Field_BoxLine { get; set; } // 边框和斜线 public abstract int Field_Shape { get; set; } // 形状的类型 } /// <summary> /// 组件移动对象定义 /// </summary> public class Draggable : ADraggableGDIObject { private bool m_IsDragging; // 能否拖动 private Point m_DraggingPoint; // 组件拖动位置 private Rectangle m_Region; // 大小范围 private Bitmap m_image; // 组件图像 private int m_controlType; // 组件类型 private bool m_isContent; // 组件内是否有内容 private int f_BandType; // 栏目类型 private Bitmap f_Img; // 图像组件的图像 private string f_Text; // 文字 private string f_TextFont; // 字体 private int f_TextFontSize; // 字体大小 private FontStyle f_TextFontStyle; // 文字样式 private string f_Align; // 对齐方式 private int f_ImgZoom; // 图像缩放 private bool[] f_BoxLine = new bool[8] { false, false, false, false, false, false, false, false }; // 边框和斜线 private int f_Shape; // 形状的类型 public Draggable(int startx, int starty, int _settype) { m_Region = new Rectangle(startx, starty, 51, 51); m_controlType = _settype; m_isContent = false; } public override int SetType { get { return m_controlType; } set { m_controlType = value; } } public override Rectangle Region { get { return m_Region; } set { m_Region = value; } } public override Bitmap Setimage { get { return m_image; } set { m_image = value; } } public override void OnPaint(PaintEventArgs e) { e.Graphics.DrawImage(m_image, m_Region); } public override bool IsDragging { get { return m_IsDragging; } set { m_IsDragging = value; } } public override Point DraggingPoint { get { return m_DraggingPoint; } set { m_DraggingPoint = value; } } public override bool isContent { get { return m_isContent; } set { m_isContent = value; } } public override int Field_BandType { get { return f_BandType; } set { f_BandType = value; } } public override Bitmap Field_Img { get { return f_Img; } set { f_Img = value; } } public override string Field_Text { get { return f_Text; } set { f_Text = value; } } public override string Field_TextFont { get { return f_TextFont; } set { f_TextFont = value; } } public override int Field_TextFontSize { get { return f_TextFontSize; } set { f_TextFontSize = value; } } public override FontStyle Field_TextFontStyle { get { return f_TextFontStyle; } set { f_TextFontStyle = value; } } public override string Field_Align { get { return f_Align; } set { f_Align = value; } } public override int Field_ImgZoom { get { return f_ImgZoom; } set { f_ImgZoom = value; } } public override bool[] Field_BoxLine { get { return f_BoxLine; } set { f_BoxLine = value; } } public override int Field_Shape { get { return f_Shape; } set { f_Shape = value; } } } public static List<ADraggableGDIObject> m_DraggableGDIObjects; /// <summary> /// 序列化保存读取组件 /// </summary> [Serializable] public class SerializerObject { public string Data_Type; // 数据库类型 public string Data_DataName; //数据库名 public string Data_Table; // 数据表 public string Data_UserName; //用户名 public string Data_Password; // 密码 public string Data_ConnectionIP; // 地址 public string Page_TypeFace; public int Page_Direction; public int[] Page_Margin; public int controlNum; public Rectangle Region; // 大小范围 public bool IsDragging; // 能否拖动 public Point DraggingPoint; // 组件拖动位置 public Bitmap Setimage; // 组件图像 public int SetType; // 组件类型 public bool isContent; // 组件内是否有内容 public int Field_BandType; // 栏目类型 public Bitmap Field_Img; // 图像组件的图像 public string Field_Text; // 文字 public string Field_TextFont; // 字体 public int Field_TextFontSize; // 字体大小 public FontStyle Field_TextFontStyle; // 文字样式 public string Field_Align; // 对齐方式 public int Field_ImgZoom; // 图像缩放 public bool[] Field_BoxLine; // 边框和斜线 public int Field_Shape; // 形状的类型 public bool[] Band_Flag; // 栏目只出现一次 public SerializerObject( string _DataType, string _DataName,string _DataTable, string _DataUserName, string _DataPassword, string _DataConnectionIP, string _TypeFace, int _Direction, int[] _Margin, int _Num, Rectangle _Region, bool _IsDragging, Point _DraggingPoint, Bitmap _Setimage, int _SetType, bool _isContent, int f_BandType, Bitmap f_Img, string f_Text, string f_TextFont, int f_TextFontSize, FontStyle f_TextFontStyle, string f_Align, int f_ImgZoom, bool[] f_BoxLine, int f_Shape, bool[] _BandFlag) { Data_Type = _DataType; Data_DataName = _DataName; Data_Table = _DataTable; Data_UserName = _DataUserName; Data_Password = _DataPassword; Data_ConnectionIP = _DataConnectionIP; Page_TypeFace = _TypeFace; Page_Direction = _Direction; Page_Margin = _Margin; controlNum = _Num; Region = _Region; IsDragging = _IsDragging; DraggingPoint = _DraggingPoint; Setimage = _Setimage; SetType = _SetType; isContent = _isContent; Field_BandType = f_BandType; Field_Img = f_Img; Field_Text = f_Text; Field_TextFont = f_TextFont; Field_TextFontSize = f_TextFontSize; Field_TextFontStyle = f_TextFontStyle; Field_Align = f_Align; Field_ImgZoom = f_ImgZoom; Field_BoxLine = f_BoxLine; Field_Shape = f_Shape; Band_Flag = _BandFlag; } } public static List<SerializerObject> serializerObject = new List<SerializerObject>(); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public static bool Change_Flag = false; // 是否改变了组件 /*窗体定义*/ public static Point screen_Location; // 窗体位置 public static Size screen_Size; //窗体大小 public static bool setFont_Flag = false; // 选择字体窗口打开标志 public static bool setFontSize_Flag = false; // 选择字体大小窗口打开标志 public static bool setDate_Flag = false; // 选择日期窗口打开标志 public static bool setPageCode_Flag = false; // 选择页码窗口打开标志 /*数据库*/ public static string Data_Type = ""; // 数据库类型 public static string Data_DataName = ""; // 数据库名 public static string Data_Table = ""; // 数据表 public static string Data_UserName = ""; //用户名 public static string Data_Password = ""; // 密码 public static string Data_ConnectionIP = ""; // 地址 /*组件区域位置*/ public static PointF[] CursorArea = new PointF[8]; // 鼠标区域 public static Font LabelFont = new Font("微软雅黑", 9, FontStyle.Regular); // label 字体设置 public static bool ShowLine = true; // 是否显示组件标线 /*设计页面*/ public static string Page_TypeFace = "A4"; // 纸张类型 public static int Page_Direction = 0; // 纸张方向 public static Size[] Page_Area = new Size[2] { new Size(789,1136), new Size(1136,789) }; // 横向、纵向纸张大小 public static int[] Page_Margin = new int[4] { 0,0,0,0 }; // 纸张边距 public static PanelEx pageDesing; // 设计框 public static PanelEx pageContainer; // 页面容器 public static PanelEx A4_PageType; // 页面 public static bool controlPlace = false; // 能否放置组件 public static int controlType = -1; // 组件类型 public static int control_Num = -1; // 组件序号 public static int oper_Record = -1; // 操作动作序号 /*底部状态信息栏*/ public static PanelEx statePanel; public static PanelEx[] control_Input = new PanelEx[8]; /*选择形状、栏目标志*/ public static int Select_Shape = 0; public static int Select_Band = 0; public static bool[] Band_Flag = new bool[3] { false,false,false}; // 栏目只出现一次
代码片段和文件信息
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using static DefineList;
public class ControlObj
{
private static Bitmap blockBox_Select = (Bitmap)Image.FromFile(“images/r1.png“);
private static Bitmap blockDot_Select = (Bitmap)Image.FromFile(“images/r2.png“);
private static Bitmap blockBox = (Bitmap)Image.FromFile(“images/r1s.png“);
private static Bitmap blockDot = (Bitmap)Image.FromFile(“images/r2s.png“);
private static int set_midX; // 绘制线段中间图像位置
private static int set_midY;// 绘制线段中间图像位置
private static UiDrawTextMethod DrawText = new UiDrawTextMethod();
public static Bitmap LinBox(int width int height int selectType int _controlType int _controlNum)
{
Bitmap _bmp = new B
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 88 2018-07-27 12:22 ds1\.vs\ds1\DesignTimeBuild\.dtbcache
..A..H. 96768 2018-09-13 09:27 ds1\.vs\ds1\v15\.suo
文件 0 2018-09-09 08:45 ds1\.vs\ds1\v15\Server\sqlite3\db.lock
文件 913408 2018-09-13 08:33 ds1\.vs\ds1\v15\Server\sqlite3\storage.ide
文件 32768 2018-09-13 08:26 ds1\.vs\ds1\v15\Server\sqlite3\storage.ide-shm
文件 4190072 2018-09-13 09:27 ds1\.vs\ds1\v15\Server\sqlite3\storage.ide-wal
文件 189 2018-07-24 09:24 ds1\App.config
文件 119 2018-07-24 11:04 ds1\bin\Debug\back.png
文件 145920 2018-09-13 08:59 ds1\bin\Debug\ds1.exe
文件 189 2018-07-24 09:24 ds1\bin\Debug\ds1.exe.config
文件 239104 2018-09-13 08:59 ds1\bin\Debug\ds1.pdb
文件 18422 2018-08-06 14:27 ds1\bin\Debug\images\band.png
文件 28066 2018-08-06 14:27 ds1\bin\Debug\images\band.psd
文件 18803 2018-09-02 20:01 ds1\bin\Debug\images\band_cur.png
文件 15152 2018-09-02 19:51 ds1\bin\Debug\images\band_pb.png
文件 15263 2018-09-02 19:53 ds1\bin\Debug\images\band_pd.png
文件 15148 2018-09-02 19:51 ds1\bin\Debug\images\band_pt.png
文件 15451 2018-09-04 11:36 ds1\bin\Debug\images\botmost.png
文件 15536 2018-09-06 10:14 ds1\bin\Debug\images\cancel.png
文件 145 2018-07-16 13:03 ds1\bin\Debug\images\cDot.png
文件 120 2018-07-16 12:55 ds1\bin\Debug\images\cLine.png
文件 15164 2018-09-06 09:38 ds1\bin\Debug\images\copy.png
文件 15735 2018-09-06 09:37 ds1\bin\Debug\images\cut.png
文件 15496 2018-09-06 08:45 ds1\bin\Debug\images\datali
文件 15229 2018-09-04 11:22 ds1\bin\Debug\images\datetime.png
文件 16006 2018-09-06 09:41 ds1\bin\Debug\images\del.png
文件 15558 2018-09-06 10:17 ds1\bin\Debug\images\delall.png
文件 15093 2018-09-06 08:48 ds1\bin\Debug\images\exit.png
文件 15290 2018-08-06 14:55 ds1\bin\Debug\images\field.png
文件 16059 2018-08-23 11:09 ds1\bin\Debug\images\font.png
............此处省略128个文件信息
- 上一篇:C#串口调试助手(源码)
- 下一篇:WPF视频播放器
相关资源
- C#联通网络宽带测试 拨号
- C#百度指数抓取方法(2012年版本已失
- C# 隐藏某个磁盘分区
- wince引脚控制程序
- C# 读取并编辑window系统的右键菜单
- C#自定义屏保(不断滚动的文字)
- C#winform打印指定区域 -控件拖动 -设置
- C#使用Hook进行改键
- 提供C#调用系统API函数弹出或收起光驱
- 通过C#自带的头文件(类)获取Windo
- C#获取电脑CPU以及内存使用率
- Syndication实现读取、创建、订阅、更新
- 利用uu云打码平台的lib实现的c#打码平
- tf-idf一种计算方法
- C# pop3 邮件接收程序
- C# 邮件群发示例 源码下载18952
- httpclient source code by csharp
- 动态抓取IPC#实现
- NServiceKit.Redis 基础操作
- XXTEA算法的C#实现和JS实现,可以互相
- C# 飞行棋 游戏源码(面向对象入门)
- Socke传输 (wince6.0系统)
- UDP Messenger 1.0.unitypackage
- asp.net 网页静态化组件(shipingx-Stati
- SocketAsyncEventArgs完成断开编程
- 基于WinPcap的C# ARP欺骗软件().rar
- C#网络应用编程 矩阵并行计算练习
- 猜数小游戏WCF网络编程技术(附服务
- 《C#版Ftp软件源码》
- 基于com串口的文件发送和接收
评论
共有 条评论