在Form中画标尺
来源:互联网 发布:英语来源 知乎 编辑:程序博客网 时间:2024/05/21 06:27
private void Prt_CardForm_Paint(object sender, PaintEventArgs e) { //使用窗体直接绘制效果不错,但因为要画坐标线时必须的刷新导致这个老闪,有点不爽啊 Graphics g = e.Graphics; Font font = new Font("Arial", 7); //Draw X int width = this.Width; for (int i = 0; i <= width; i++) { SizeF size = g.MeasureString(Convert.ToString(i / 10), font); int x = (int)(i / 25.4 * g.DpiX); Point start = new Point(x, 30); Point end = new Point(x, 30 - 5); if (i % 5 == 0) { end = new Point(x, 30 - 10); } if (i % 10 == 0 && i > 0) { end = new Point(x, 30 - 15); g.DrawString(Convert.ToString(i / 10), font, Brushes.Gray, new PointF(x - size.Width / 2, 15 - size.Height)); } g.DrawLine(Pens.Gray, start, end); } //Draw Y int height = this.Height; for (int i = 0; i <= height; i++) { SizeF size = g.MeasureString(Convert.ToString(i / 10), font); int y = (int)(i / 25.4 * g.DpiY); Point start = new Point(30, y); Point end = new Point(30 - 5, y); if (i % 5 == 0) { end = new Point(30 - 10, y); } if (i % 10 == 0 && i > 0) { end = new Point(30 - 15, y); g.DrawString(Convert.ToString(i / 10), font, Brushes.Gray, new PointF(15 - size.Width, y - size.Height / 2)); } g.DrawLine(Pens.Gray, start, end); } }
为了应对两个标尺闪烁太厉害的问题,只好使用两个PictureBox来画标尺,奇怪了,在PictureBox上面画标尺就比较稳定了!
实际效果如图:
0 0
- 在Form中画标尺
- 在Mockplus中使用标尺和参考线
- MFC 画标尺
- 在Word中巧改厘米标尺
- 在form中打开新窗口
- COMMIT在FORM中用法
- COMMIT在FORM中用法
- 在form中提交list
- 如何在Form中嵌入Excel
- CSharp Tips:在Form中显示动画图片
- 在struts form中使用Map List
- 在Sharepoint中使用Infopath form service
- 在IE中托管Windows Form
- 在form窗口中动态添加控件
- 在struts中使用动态Form
- 在IE中托管Windows Form
- 如何在BCB中调试Active Form
- 在Window Form中使用NHibernate
- WMI--Windows API--COINIT
- web copy tools
- Google Code Jam Notes - Rotate - Java
- vim 配置文件
- 脚本渗透概述
- 在Form中画标尺
- dbd实例
- Google Code Jam Notes - Rope Intranet - Java
- Google Code Jam Notes - Reverse Words - Java
- Google Code Jam Notes - Read Phone Number - Java
- Google Code Jam Notes - Rational Number Tree - Java
- Google Code Jam Notes - Moist - Java
- 读写XML文件
- 图片的圆角处理