WPF中Line线宽是否能够保持不变

jiuzaizuotian2014 2017-12-01 04:59:35
在用WPF的Canvas来绘制简单线条图时,用Line作为直线形状来实现。为了方便操作,有时需要放大图形,这是,用到Line类(实际是Line的祖先类UIElement)的RenderTransform属性。
例如
Line myLine=new Line();
myLine.X1=...
......
myLine.RenderTransform=new ScaleTransform(scaleX,scaleY,centerX,centerY).

目前来讲,当放大或缩小时,线的长度和宽度都是放大和缩小的。
我想要的结果是:无论放大和缩小,都不改变直线显示的宽度,即希望只是改变直线长度而不改变其显示的宽度,类似于AutoCAD作图时无论放大显示还是缩小显示时线宽也都是不变的。不知大侠们是否遇到类似的问题,希望大侠们赐教,谢谢
...全文
585 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
比如说,地图上只显示中国和(缩小)显示世界相比,那些标注的点线面的区别绝不是什么粗细之分,都是重新安排。只有当过渡动画时可能瞬间使用使用 scale 的图形遮挡一下(让用户感觉似乎不会有延迟而是连续渐变),然后当最终放大或者缩小的试图加载完毕时,原来的 scale 了的图形就该被删除掉了。
  • 打赏
  • 举报
回复
那本身就不是 Scale 概念,只是业务上的重建。这个还要从系统架构设计着手理解,不能死抠底层技术术语。设计次实现可能只要2、3 行语句,但是不是 WPF 能告诉你的。
jiuzaizuotian2014 2017-12-03
  • 打赏
  • 举报
回复
谢谢各位,目前的解决方式是这样的: (1)方法一:采用Line的Scale是可以的,当线条被Scale的时候,同时反向修改线条的宽度,将线条宽度修改为原始宽度*1/Scale就可以了。 (2)方法二:放大时直接修改线条的位置,即画布不变,线条端点位置根据缩放比例进行修改。
xuzuning 2017-12-01
  • 打赏
  • 举报
回复
那通过;路径(Path)呢?
jiuzaizuotian2014 2017-12-01
  • 打赏
  • 举报
回复
放大画布时,直线的宽度也是直接跟随缩放比例放大或缩小的,也没办法保持线宽不变啊
xuzuning 2017-12-01
  • 打赏
  • 举报
回复
放大图形 应改变画布的缩放比例,而不是图元的 如果画布中有一万条线,你也一条条缩放吗?wpf 这么弱智?(GDI+都提供有不少于三种方案)
jiuzaizuotian2014 2017-12-01
  • 打赏
  • 举报
回复
如果是斜线怎么办呢
  • 打赏
  • 举报
回复
垂直线 不缩放X;水平线不缩放Y

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧