请教C#中如何在 WinForm中画曲线图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教C#中如何在 WinForm中画曲线图相关的知识,希望对你有一定的参考价值。
软糖来回答罗。。。使用GDI+绘图技术即可。
首先引用System.Drawing命名空间。
给你绘制弧线、曲线和路线的参考代码:
Graphic 画纸 = Form1.CreateGraphics();public void 绘制弧线(Pen 钢笔, int X1, int Y1, int 宽, int 高, int 起始角, int 结束角)
画纸.DrawArc(钢笔, X1, Y1, 宽, 高, 起始角, 结束角);
public void 绘制弧线(Pen 钢笔, Rectangle RECT, int 起始角, int 结束角)
画纸.DrawArc(钢笔, RECT, 起始角, 结束角);
public void 绘制曲线(Pen 钢笔, Point[ ] 点组, float 张力)
画纸.DrawCurve(钢笔, 点组, 张力);
public void 绘制曲线(Pen 钢笔, PointF[ ] 点组, int 偏移, int 段数)
画纸.DrawCurve(钢笔, 点组, 偏移, 段数);
public void 绘制曲线(Pen 钢笔, PointF[ ] 点组, int 偏移, int 段数, float 张力)
画纸.DrawCurve(钢笔, 点组, 偏移, 段数, 张力);
public void 绘制路线(Pen 钢笔, GraphicsPath 路线)
画纸.DrawPath(钢笔, 路线);
public void 填充路线(Brush 画笔, GraphicsPath 路线)
画纸.FillPath(画笔, 路线);
另外要想不闪烁,请使用双缓冲技术:
namespace 引擎.绘图.GDI/// <summary>
/// 为绘图提供双缓冲。提供建立多层画纸的方法并返回用于绘制的画纸。
/// </summary>
public class 画板
private BufferedGraphicsContext M画板;
private List<BufferedGraphics> M画纸;
public int 画纸数 get; private set;
private int M当前号 = 0;
public Graphics 当前画纸 ( ) return M画纸[M当前号].Graphics;
public Graphics 画纸 ( int 号 ) return M画纸[号].Graphics;
public Rectangle 显示矩形 get; set;
public int 高 get return 显示矩形.Height;
public int 宽 get return 显示矩形.Width;
/// <summary>
/// 新建画板并关联到指定区域的画纸上
/// </summary>
/// <param name="关联画纸">关联的Graphic,通常为Form.CreateGraphics</param>
/// <param name="关联矩形">关联的矩形区域,作为画板的工作区</param>
/// <param name="层数">画板内含的缓冲区个数,不建议大于4个,默认为2个</param>
public 画板 (Graphics 关联画纸, Rectangle 关联矩形, int 层数 = 2 )
M画纸 = new List<BufferedGraphics>();
M画板 = BufferedGraphicsManager.Current;
显示矩形 = 关联矩形;
画纸数 = 层数;
for (int i=1; i<=画纸数 ;i++)
BufferedGraphics t画纸;
t画纸 = M画板.Allocate(关联画纸, 显示矩形);
M画纸.Add(t画纸);
M当前号 = 0;
public event Action 呈现事件;
public void 引发呈现事件 ( ) if (呈现事件 != null) 呈现事件();
public void 呈现 ( )
M当前号++;
if (M当前号 > 画纸数 - 1) M当前号 = 0;
M画纸[M当前号].Render();
引发呈现事件();
参考技术A 百度一下C# chart或者zedgraph
请教c# winform,权限设计问题
参考技术A 新增或者修改一个用户的时候。在winform
中,怎么样使用2个ListBox
互移比如新增一个
新用户。
首先,加载窗体的时候,左边的ListBox列出所有的角色名。然后双击需要的角色,就移动到右边的ListBox中。然后点保存,就写入数据库中。
如果是修改一个用户的时候,加载窗体时,左边的ListBox只是列出未选的角色。右边的,则是列出
已选的角色
请教请教……[/Quote] 参考技术B 字段里用逗号是最愚蠢的设计,因为字符串处理是数据库的弱项,处理起来很麻烦,效率又低。应该设计成用户表Usersuid,uName1
张三
2
李四3
小明4
小李
用户权限表UserRoleuid
roleid1
21
32
12
22
3...角色表Roleroleid
rolename
parentRoleID1
主管
32
员工
13
经理
0其中parentRoleID定义上下级关系,缺点是查询时用到递归,比较麻烦,如果不需要可以不用角色权限表RolePermissionRid,新增权,修改权,删除权,..........N权1
1
1
12
1
0
03
1
0
1
也可以把权限单独做个表:Permissionpid
pname1
删除2
修改角色权限表就变成:rid
pid1
11
2...对于比较复杂的情况,还可以增加一个"实体"表:Entityeid
ename1
工资表2
签到表以及实体权限表EntityPermissionepid
eid
pid1
1
11
1
2...然后将角色和实体权限表建立一个多对多的映射表
以上是关于请教C#中如何在 WinForm中画曲线图的主要内容,如果未能解决你的问题,请参考以下文章
玩转贝塞尔曲线,教你在Unity中画Bezier贝塞尔曲线(二阶三阶),手把手教你推导公式