C#自定义控件 类似于Linechart
界面效果:


对外提供的属性设置
/// <summary>
/// 背景色
/// </summary>
public Color BackColor;
/// <summary>
/// 边框颜色
/// </summary>
, , );
/// <summary>
/// 线条颜色
/// </summary>
, , );
/// <summary>
/// 折线颜色
/// </summary>
, , );
/// <summary>
/// 是否显示控件边框
/// </summary>
public bool rect_isvisable = false;
/// <summary>
/// 边框线宽
/// </summary>
;
/// <summary>
/// 垂直线条间距
/// </summary>
;
/// <summary>
/// 水平线条间距
/// </summary>
;
/// <summary>
/// 点密度,越小越稀疏
/// </summary>
private float point_density = 0.7f;
#region
public float Point_density
{
get
{
return point_density;
}
set
{
point_density = value;
|| value > )
{
point_density = 0.7f;
}
}
}
public float Linewidth
{
get
{
return linewidth;
}
set
{
linewidth = value;
)
{
linewidth = ;
}
}
}
public int Vertical_spacing
{
get
{
return vertical_spacing;
}
set
{
)
{
value = ;
}
vertical_spacing = value;
}
}
public int Horizontal_spacing
{
get
{
return horizontal_spacing;
}
set
{
)
{
value = ;
}
horizontal_spacing = value;
}
}
#endregion
这些要保证是大于0,我使用属性了,这样比频繁的类型转换要好
绘制
protected override void OnPaint(PaintEventArgs pe)
{
this.drawtable();
this.drawpolygonal();
base.OnPaint(pe);
}
private void drawtable()//表格绘制
{
if (this.rect_isvisable)
{
this.rectanglelinecolor = Color.Black;
}
else
{
this.rectanglelinecolor = this.BackColor;
}
Graphics g = this.CreateGraphics();
g.FillRectangle(new SolidBrush(this.BackColor), this.ClientRectangle);
)+this.vertical_spacing;i<this.Height;i+=this.vertical_spacing)
{
g.DrawLine(), this.ClientRectangle.X, i, this.Width, i);
}
)+this.Horizontal_spacing;i<this.Width;i+=this.Horizontal_spacing)
{
g.DrawLine(), i,this.ClientRectangle.Y,i, this.Height);
}
g.DrawRectangle(, , this.Width - this.linewidth, this.Height - this.linewidth);
g.Dispose();
}
/// <summary>
/// 折线绘制
/// </summary>
private void drawpolygonal()
{
Point ps=new Point();
Point pe;
Graphics g = this.CreateGraphics();
,j=; i>=;i--,j++)
{
float f = this.polygonalpoint[i];
int w = this.Width - this.Horizontal_spacing_per_pp*j;
int h = this.Height - (int)(f * this.Height);
pe = ps;
ps = new Point(w, h);
)
{
g.DrawLine(p,pe, ps);
}
}
}
链接:http://pan.baidu.com/s/1gdjod8J
添加到自己的项目里拖进去就可以了;和普通的控件一样使用
M$自己也有更好的linechart,不过插件肯定比较大的了
C#自定义控件 类似于Linechart的更多相关文章
- MPAndroidChart Wiki(译文)~Part 2
7. 填充数据 这一章节将讲解给各式各样的图表设置数据的方法. 7.1 LineChart(线形图) 想给图表添加数据,使用如下方法: public void setData(ChartData da ...
- 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)
现在基本上所有的需要用户注册的APP都有一个需要用户上传头像的需求,上传的头像基本都是类似于QQ.微信等社交应用圆形头像.最近,正在做的一个社交应用多处需要用到这种圆形头像的处理,总不能每次都对图片做 ...
- android自定义控件一站式入门
自定义控件 Android系统提供了一系列UI相关的类来帮助我们构造app的界面,以及完成交互的处理. 一般的,所有可以在窗口中被展示的UI对象类型,最终都是继承自View的类,这包括展示最终内容的非 ...
- ASP.NET MVC学习之母版页和自定义控件的使用
一.母板页_Layout.cshtml类似于传统WebForm中的.master文件,起到页面整体框架重用的目地1.母板页代码预览 <!DOCTYPE html> <html> ...
- android第一行代码-6.自定义控件的实现
0.假设一个应用中标题栏控件都是共用的,如果每个activity都需要设置button,绑定方法,那代码就会很臃肿.那我们可以自定义控件,然后继承这个控件就行了. 自定义控件为TitleLayout, ...
- android自定义控件(3)-自定义当前按钮属性
那么还是针对我们之前写的自定义控件:开关按钮为例来说,在之前的基础上,我们来看看有哪些属性是可以自定义的:按钮的背景图片,按钮的滑块图片,和按钮的状态(是开还是关),实际上都应该是可以在xml文件中直 ...
- android自定义控件(1)-点击实现开关按钮切换
自定义控件的步骤.用到的主要方法: 1.首先需要定义一个类,继承自View:对于继承View的类,会需要实现至少一个构造方法:实际上这里一共有三个构造方法: public View (Contex ...
- android 自定义控件 使用declare-styleable进行配置属性(源码角度)
android自定义styleableattrs源码 最近在模仿今日头条,发现它的很多属性都是通过自定义控件并设定相关的配置属性进行配置,于是便查询了解了下declare-styleabl ...
- c#自定义控件属性面板及选择资源设置
博客转移到 http://jacean.github.io/ 继续分享编程经验 因为要做流体布局,但两个控件没办法组合,就做自定义控件.这个控件需要一个text设置文本,一个pic设置图片显示,图片通 ...
随机推荐
- ubuntu 中文显示乱码问题 (转)
添加中文字符编码: $sudo vim /var/lib/locales/supported.d/local #添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 ...
- Mac 常用属性
如果需要让隐藏的文件可见. 具体做法就是打开一个Terminal终端窗口,输入以下命令: 对于OS X Mavericks 10.9: defaults write com.apple.finder ...
- Mysql代码建外键问题
用下面代码建外键 运行之后 没有提示错误 但是打开建好的表格 外键并没有建立上 打开外键栏 里面并没有外键 在从表设置了外键列里面输入东西没有任何限制 成功建立应该是下面这样 什么情况???????? ...
- EasyNVR如何实现跨域鉴权
EasyNVR提供简单的登录鉴权,客户端通过用户名密码登录成功后,服务端返回认证token的cookie, 后续的接口访问, 服务端从cookie读取token进行校验. 但是, 在与客户系统集成时, ...
- 常用脚本--查看死锁和阻塞usp_who_lock(转)
USE [master] GO /****** Object: StoredProcedure [dbo].[sp_who_lock] Script Date: 02/07/2014 11:51:24 ...
- 性能测试--初识Jmeter
初识Jmeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动 ...
- 中文WebFont探索
本文主要讲中文webFont的相关知识,包含了业界现状.WebFont优势.实现方案等. 一 业界使用WebFont现状 1.1 英文WebFont使用现状 英文版已使用非常广泛.比较有名的字体库:G ...
- 我的Android进阶之旅------>Handlerr.removeCallbacksAndMessages(null)的作用
今天都到一段代码,在onDestroy()方法中,使用了下面的代码: mHandler.removeCallbacksAndMessages(null); 一开始我完全看不懂,我为什么参数是null, ...
- python+NLTK 自然语言学习处理三:如何在nltk/matplotlib中的图片中显示中文
我们首先来加载我们自己的文本文件,并统计出排名前20的字符频率 if __name__=="__main__": corpus_root='/home/zhf/word' word ...
- Spring-data-redis:特性与实例(转载)
原文地址:http://www.cnblogs.com/davidwang456/p/4915109.html Spring-data-redis为spring-data模块中对redis的支持部分, ...