首页 > 其他分享 >wpf 标尺 刻度尺 适用于图像缩放

wpf 标尺 刻度尺 适用于图像缩放

时间:2024-12-02 17:12:14浏览次数:5  
标签:lineIndex cm 缩放 cvRuler textBlock wpf 刻度尺 line

xaml部分主要代码:

<Canvas x:Name="cvRuler" Margin="0" Background="WhiteSmoke" TextBlock.Foreground="Black"/>

后台主要代码

 1         //画标尺
 2         private void DrawRule()
 3         {
 4 
 5             if (cvRuler.Children != null)
 6             {
 7                 cvRuler.Children.Clear();
 8             }
 9 
10             System.Windows.Shapes.Line _line;
11             TextBlock _textBlock;
12             
13             var xScale =你的缩放倍数;
14 
15             int _lineIndex = 0;
16             double _width = cvRuler.ActualWidth;//展示部分总pixel
17             string _unit = "(cm)";
18             float _inch = (float)5195/600;//dpi为600时,对应总英寸
19             float _cm = (float)(_inch*2.54);//英寸换算成cm
20             double _pixelPerline = _width/_cm/10*xScale;//刻度尺每cm对应多少pixel。分成十份,再乘以缩放倍数
21             for (double i = 0; i < _width; i += _pixelPerline)
22             {
23                 _line = new System.Windows.Shapes.Line();
24                 _line.X1 = i;
25                 _line.X2 = i;
26                 _line.Y1 = 0;
27                 _line.StrokeThickness = 1;
28                 if (_lineIndex % 10 == 0)//十份,最长的刻度线
29                 {
30                     _line.Stroke = Brushes.DimGray;
31                     _line.Y2 = 25;
32 
33                     _textBlock = new TextBlock();
34                     _textBlock.Text = (_lineIndex/10).ToString()+(_lineIndex==0 ? _unit : "");
35                     _textBlock.FontSize = 8;
36                     _textBlock.HorizontalAlignment = HorizontalAlignment.Left;
37                     _textBlock.VerticalAlignment = VerticalAlignment.Top;
38                     _textBlock.Margin = new Thickness(i+2, 20, 0, 0);
39                     cvRuler.Children.Add(_textBlock);
40                 }
41                 else if (_lineIndex % 5 == 0)//中间的刻度线
42                 {
43                     _line.Stroke = Brushes.Gray;
44                     _line.Y2 = 20;
45                 }
46                 else
47                 {
48                     _line.Stroke = Brushes.Gray;
49                     _line.Y2 = 15;
50                 }
51                 cvRuler.Children.Add(_line);
52 
53                 _lineIndex++;
54             }
55         }

 

标签:lineIndex,cm,缩放,cvRuler,textBlock,wpf,刻度尺,line
From: https://www.cnblogs.com/dyfisgod/p/18582234

相关文章

  • WPF中的TypeConverter类型
    自定义对象如下:点击查看代码publicclassHuman{publicstringName{get;set;}publicHumanChild{get;set;}}需求1:点击界面上Button时弹出Human对象的Name信息代码实现:点击查看代码<Windowx:Class="HappyWPF.MainWindow"......
  • 界面控件DevExpress WPF v24.2新功能预览 - 人工智能(AI)集成
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。无论是Office办公软件的衍伸产品,还是以数据为中心......
  • css图片缩放失真出现锯齿的如何解决呢?
    CSS图片缩放失真出现锯齿,主要是因为浏览器默认的缩放算法不够精细,导致图像边缘模糊或出现锯齿。以下是一些解决方法:1.使用更高质量的图片:选择合适的图片格式:对于照片等包含丰富色彩和细节的图像,使用JPEG格式通常是最佳选择。对于包含大块纯色或简单图形的图像,PNG格式或Web......
  • 移动端如何禁止用户手动缩放页面?
    在移动端禁止用户手动缩放页面,主要通过设置viewportmeta标签来实现。以下是一些常用的方法:1.使用user-scalable=no(已弃用,但仍被广泛支持)这是最传统的方法,虽然已被标记为弃用,但在大多数浏览器中仍然有效。直接在viewportmeta标签中添加user-scalable=no即可:<me......
  • 数据预处理方法—特征选择、特征缩放、特征构造
    特征选择1.1原理特征选择是选择对模型训练最重要的特征,减少数据维度,去除冗余或不相关特征,提高模型性能的性能和训练速度,减少过拟合。1.2核心公式 可以使用基于树模型的特征重要性度量,如在随机森林中计算特征的重要性:其中,Ii,j是第j棵树中特征Xi的重要性度量。假设使......
  • 使用XWPFTemplate进行java后端word模版导出
    1.pom引入poi-tl<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.7.3</version></dependency> 2.word模版 3.业务代码......
  • WPF 桌面应用开发进阶:用户界面设计与交互逻辑的完美融合
    WindowsPresentationFoundation(WPF)是Microsoft推出的一个桌面应用开发框架,旨在提供一个高效、可扩展的用户界面设计工具。WPF支持数据绑定、模板化、响应式布局等先进的特性,能够帮助开发者快速构建现代化的桌面应用程序。本文将围绕WPF开发中的界面设计与交互逻辑,详细......
  • 如何在WPF中打印PDF文件
    最近遇到有客户需要打印PDF的需求,这里分享一下两种解决方案: 1、使用"谓词(verb)"当用户右键单击Shell对象(如文件)时,Shell会显示(上下文)菜单的快捷方式。此菜单包含一个命令列表,用户可以选择这些命令对项执行各种操作。这些命令也称为快捷菜单项或谓词。可以自定义快捷......
  • 【WPF】Prism P2
     一、弹窗设置Step1在模块A创建弹窗A和弹窗B,注意,还是要使用【用户控件】<UserControlx:Class="ModuleA.Views.DialogA"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2......
  • WPF的三个全局异常捕捉
    1.UI线程未捕获异常处理事件(DispatcherUnhandledException)作用和触发时机:在WPF应用中,UI线程负责处理界面的交互、渲染等诸多操作。当在UI线程上发生了异常,并且这个异常没有被代码中常规的try-catch块等方式捕获处理时,就会触发DispatcherUnhandledException事件。例如,在某......