// 画标尺

private void DrawRule(double scale)//scale缩放的倍数
{

if (cvRuler.Children != null)
{
cvRuler.Children.Clear();
}

System.Windows.Shapes.Line _line;
TextBlock _textBlock;

const double _minPixel = 30;
string _unit = "mm";
double _scientificF;
int _scientificE;
string[] _strTemp = (_minPixel / 1).ToString("E").Split('E');
double.TryParse(_strTemp[0], out _scientificF);
int.TryParse(_strTemp[1], out _scientificE);
if (_scientificE >= 2 || (_scientificE >= 1 && _scientificF >= 5))
{
_unit = "m";
_scientificE -= 3;
}

_textBlock = new TextBlock();
_textBlock.Text = _unit;
_textBlock.FontSize = 8;
_textBlock.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
_textBlock.VerticalAlignment = System.Windows.VerticalAlignment.Top;
_textBlock.Margin = new Thickness(10, 0, 0, 0);
cvRuler.Children.Add(_textBlock);

int _lineIndex = 0;
//double _width = cvRuler.ActualWidth - 0;
double _width = grid_Loy.ActualWidth - 0;
if (4000 * scale > grid_main.ActualWidth)
{
_width = 4000 * scale;
}

DPI dpi = new DPI();
float dpi_x = dpi.Dpi_x;
double mm = _width / dpi_x * 25.4;
//_width = mm;
double mmTopx = 1 * dpi_x / 25.4 * scale;

if (scale < 1)//缩放<100%
{
mmTopx = 10 * mmTopx;
}

for (double i = 0; i < _width; i += mmTopx)
{
_line = new System.Windows.Shapes.Line();
if (_lineIndex % 10 == 0)
{
_line.Stroke = Brushes.Black;
_line.StrokeThickness = 1;
_line.X1 = i;
_line.Y1 = 0;
_line.X2 = i;
_line.Y2 = 20;
_line.VerticalAlignment = VerticalAlignment.Bottom;

_textBlock = new TextBlock();
_textBlock.Text = _lineIndex.ToString();
if (scale < 1)
{
_textBlock.Text = (_lineIndex*10).ToString();
}
_textBlock.FontSize = 8;
_textBlock.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
_textBlock.VerticalAlignment = System.Windows.VerticalAlignment.Top;
_textBlock.Margin = new Thickness(i, 0, 0, 0);
_textBlock.Foreground = Brushes.Black;
cvRuler.Children.Add(_textBlock);
}
else if (_lineIndex % 5 == 0)
{
_line.Stroke = Brushes.Black;
_line.StrokeThickness = 1;
_line.X1 = i;
_line.Y1 = 0;
_line.X2 = i;
_line.Y2 = 10;
_line.VerticalAlignment = VerticalAlignment.Bottom;

if (scale < 1)
{
_textBlock = new TextBlock();
_textBlock.Text = (_lineIndex * 10).ToString();
_textBlock.FontSize = 8;
_textBlock.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
_textBlock.VerticalAlignment = System.Windows.VerticalAlignment.Top;
_textBlock.Margin = new Thickness(i, 0, 0, 0);
_textBlock.Foreground = Brushes.Black;
cvRuler.Children.Add(_textBlock);
}
}
else
{
_line.Stroke = Brushes.DimGray;
_line.StrokeThickness = 1;
_line.X1 = i;
_line.Y1 = 0;
_line.X2 = i;
_line.Y2 = 5;
_line.VerticalAlignment = VerticalAlignment.Bottom;
}
cvRuler.Children.Add(_line);

_lineIndex++;
}

}

转载于:https://www.cnblogs.com/xunyiHe/p/9957412.html

c# 画刻度尺(支持缩放)相关推荐

  1. 前端 HTML5 Svg 画板(支持视频、图片上涂鸦,支持缩放、修改、颜色、复选...)

    GitHub 地址 支持 视频.图片 上涂鸦,做标记 画板功能支持 矩形.圆形.椭圆.箭头.直线.文本,支持 缩放.修改.调整字号颜色.移动位置....,画板数据支持上传保存,后续传入重新复原. 画板 ...

  2. Android怎么隐藏前端,Android-Webview支持缩放并掩藏讨厌的缩放控制条

    转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/46717621 本文出自[海龙的博客] 之前转载过Android web ...

  3. Android webView 支持缩放及自适应屏幕

    1 //支持javascript 2 web.getSettings().setJavaScriptEnabled(true); 3 // 设置可以支持缩放 4 web.getSettings().s ...

  4. [Swift通天遁地]九、拔剑吧-(9)创建支持缩放、移动、裁切的相机视图控制器

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. Android中使用WebView加载本地html并支持运行JS代码和支持缩放

    场景 Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/art ...

  6. Android实现支持缩放平移图片

    本文主要用到了以下知识点 Matrix GestureDetector 能够捕捉到长按.双击 ScaleGestureDetector 用于检测缩放的手势 自由的缩放 需求:当图片加载时,将图片在屏幕 ...

  7. Android 手势检测实战 打造支持缩放平移的图片预览效果(下)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/39480503,本文出自:[张鸿洋的博客] 上一篇已经带大家实现了自由的放大缩小图 ...

  8. H5头像完整制作,可拖拽缩放,可添加装饰图标(装饰图标支持缩放、旋转、拖拽)

    H5头像制作类的程序本以为到处都可以搜索到,可是真写这个项目的时候才发现太困难了,因为根本没有现成的功能模块可以拼凑,着实费了不少力气,好在最终圆满交工. 还是先看效果 源码获取渠道 小程序内联系客服 ...

  9. base64图裁剪 php_php图片上传类(支持缩放、裁剪、图片缩略功能)

    namespace dollarphp; /** * @desc:图片上传类 * @author [Lee] ]> * 1.自动验证文件是表单提交的文件还是base64流提交的文件 * 2.验证 ...

  10. 类似微信,微博,QQ的头像截图功能, 图片支持缩放

    类似微信,微博,QQ的头像截图功能, 图片支持缩放, 不多说了, 直接上源码! http://pan.baidu.com/s/1gdJxb03

最新文章

  1. 【项目实战】多场景下的图表可视化表达
  2. CodeReview学习与总结
  3. 计算机网络按信息传输介质的性能来划分,大学计算机基础练习题网络技术.doc...
  4. Zookeeper(一)——简介
  5. Python机器学习:逻辑回归001什么是逻辑回归
  6. 创科视觉软件说明书_【拓斯达 | GGII】20192023年中国机器视觉行业调研
  7. 篇章级关系抽取(Doc-RE)论文列表整理
  8. 最清楚的01背包问题讲解
  9. 深度学习中的9种归一化方法概述
  10. java nutch 爬虫_Java分布式爬虫Nutch教程——导入Nutch工程,执行完整爬取
  11. arccos用计算机,arccos0(arccos在线计算器)
  12. 一个简单文本分类任务-EM算法-R语言
  13. 普通带条件查询接口报错 Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError:
  14. 【Unity3D插件】UniRx(基于Unity的响应式编程框架)插件学习
  15. 全国电费优惠充值接口源码
  16. 艾兰岛编辑器-全局存储
  17. XenDesktop 连接数据库报错
  18. Reaveal + iPhone(越狱)分析第三方app的UI视图结构
  19. deepin更换图标
  20. linux内核如何安装vim,linux软件安装以及vim

热门文章

  1. PDPS软件:机器人仿真动画视频输出功能介绍与使用方法
  2. 利用table制作一个简单的个人简历
  3. tensorflow中的shape函数理解
  4. php快递地址填写,智能识别快递地址api接口实现(PHP示例)
  5. win10系统,打开word文档慢慢慢
  6. python 爬取整部漫画(简单的图片爬取)
  7. PR学习笔记——Pr2019快速使用指南——视频剪辑
  8. 插上u盘显示格式化怎么办?
  9. Real-Time Rendering 第五章 光照模型
  10. java 注解处理器的作用_Java注解处理器