WPF,GuidelineSet如何设置GuidelinesX和GuidelinesY

货郎大叔 2017-10-11 05:47:02

<Grid>
<Image Stretch="None">
<Image.Source>
<DrawingImage PresentationOptions:Freeze="True">
<DrawingImage.Drawing>
<DrawingGroup>
<GeometryDrawing Brush="Black">
<GeometryDrawing.Geometry>
<GeometryGroup>
<LineGeometry StartPoint="30,30" EndPoint="30,300" />
<LineGeometry StartPoint="60,30" EndPoint="60,300" />
<LineGeometry StartPoint="90,30" EndPoint="90,300" />
<LineGeometry StartPoint="120,30" EndPoint="120,300" />
</GeometryGroup>
</GeometryDrawing.Geometry>
<GeometryDrawing.Pen>
<Pen Brush="Blue" Thickness="1" />
</GeometryDrawing.Pen>
</GeometryDrawing>
<DrawingGroup.GuidelineSet>
<GuidelineSet GuidelinesX="0.5,2.5" GuidelinesY="25,50,75" />
</DrawingGroup.GuidelineSet>
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Grid>


上面的代码中,绘了4条宽度值为1的直线,为了使线条更为清晰,使用了GuidelineSet ,这样下来,随便拉动窗口,四条宽度为1的直线也不会有抗锯齿的现象,边缘很清晰。
我的问题是,对于GuidelineSet 来说,GuidelinesX和GuidelinesY该怎么设置,有什么讲究吗?我上面的数字都是随便设置的,居然也有效果。
...全文
373 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
货郎大叔 2017-10-18
  • 打赏
  • 举报
回复
有没有高人指点呢
货郎大叔 2017-10-17
  • 打赏
  • 举报
回复
还是没搞明白,具体该怎么设置GuidelinX和GuidelinesY这两个属性
货郎大叔 2017-10-17
  • 打赏
  • 举报
回复
还是没搞明白,具体该怎么设置GuidelinX和GuidelinesY这两个属性
  • 打赏
  • 举报
回复
引用 9 楼 sr32r345 的回复:
GuidelinX必须设置2个,GuidelinesY必须设置3个数吗?
不是的,这个值你想设多少就多少个。它相当于一个刻度,表示在这个刻度下要进行对齐。也就是说你想在某个像素必须进行对齐,那么你就将这个刻度设为参考线。GuidelineSet的像素对齐并不是屏幕上每一个像素都会对齐,而是在尽可能的情况下对齐,而你可以设置参考线,指定某些地方必须对齐。
货郎大叔 2017-10-16
  • 打赏
  • 举报
回复
GuidelinX必须设置2个,GuidelinesY必须设置3个数吗?
晨易夕 2017-10-13
  • 打赏
  • 举报
回复
很多时候我也觉得MSDN说的不详细,特别是不了解相关类的特性的时候,像这样一句 “获取或设置一系列表示 Y 轴上参考线的坐标值。”我也是搞不明白的。
xinweilee 2017-10-13
  • 打赏
  • 举报
回复
引用 3 楼 sr32r345 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 参见:http://www.wpftutorial.net/DrawOnPhysicalDevicePixels.html
看了,但还是很迷糊。而且GuidelinesX和GuidelinesY,有时候是2个数,有时候是3个数,这又是咋的呢[/quote] GuideLine就是尺子,GuidelinesX两个数就是两把横向的尺子,GuidelinesY三个参数就是三把纵向的尺子,尺子的多少根据自己需要,楼主的例子中GuidelinesY完全可以不指定,GuidelinesX指定一个0.5解决即可像素对齐的问题,而将GuidelinX设置为29.5,60两个值就能看出效果,具体需要几把尺子看需求
  • 打赏
  • 举报
回复
引用 3 楼 sr32r345 的回复:
[quote=引用 2 楼 duanzi_peng 的回复:] 参见:http://www.wpftutorial.net/DrawOnPhysicalDevicePixels.html
看了,但还是很迷糊。而且GuidelinesX和GuidelinesY,有时候是2个数,有时候是3个数,这又是咋的呢[/quote] 且GuidelinesX和GuidelinesY的数字个数是不固定的。你可以通过设置X轴和Y轴上的参考线控制GuidelineSet的像素对齐。参考线可以设置为很多条,GuidelinesX和GuidelinesY里面就是这些参考线的坐标。
  • 打赏
  • 举报
回复
如果你想解决像素对齐,取消锯齿的话可以看看这篇文章 http://blog.csdn.net/libby1984/article/details/51557821
货郎大叔 2017-10-13
  • 打赏
  • 举报
回复
引用 7 楼 xinweilee 的回复:
[quote=引用 3 楼 sr32r345 的回复:]
[quote=引用 2 楼 duanzi_peng 的回复:]
参见:http://www.wpftutorial.net/DrawOnPhysicalDevicePixels.html

看了,但还是很迷糊。而且GuidelinesX和GuidelinesY,有时候是2个数,有时候是3个数,这又是咋的呢[/quote]
GuideLine就是尺子,GuidelinesX两个数就是两把横向的尺子,GuidelinesY三个参数就是三把纵向的尺子,尺子的多少根据自己需要,楼主的例子中GuidelinesY完全可以不指定,GuidelinesX指定一个0.5解决即可像素对齐的问题,而将GuidelinX设置为29.5,60两个值就能看出效果,具体需要几把尺子看需求[/quote]

按照你说的,GuidelinX设置为29.5,60,线条怎么这么模糊,你是怎么看待GuidelinX和GuidelinesY这两个属性的呢,这两个属性具体是设置的什么东西,该怎么设置呢?
货郎大叔 2017-10-13
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
参见:http://www.wpftutorial.net/DrawOnPhysicalDevicePixels.html
看了,但还是很迷糊。而且GuidelinesX和GuidelinesY,有时候是2个数,有时候是3个数,这又是咋的呢
货郎大叔 2017-10-12
  • 打赏
  • 举报
回复
在线等.....
在Windows系统中,notepad.exe(记事本)是一个“经典的”、“简洁的”文本编辑器。这个软件,没有华丽的外观,也没有繁杂的功能,仅仅是一个文本编辑小软件。虽然经过Windows系统数十年的变换,但它却保持着永恒姿态,数十年来几乎不曾改变过。曾经,VS中的经典DEMO中,就有它的身影,一个新建的项目,就藏有一个新建的“记事本”。然而,在WPF的项目中,“记事本”却消失的无影无踪,也许是很容易实现,也许是为了革新,而不愿再传承“经典”。确实,使用WPF技术再次让“记事本”复活,确实也是一件非常容易的事情。但是,如果,使用WPF技术,再搭配当下非常流行的MVVM模式呢?复活“记事本”的难度却陡然上升至很多WPF程序员为之默默叹气。而,MVVM模式是掌握WPF的最顶级技术,MVVM模式拥有的无尽的优势,让WPF相对于过往的编程模式来说,是一种革命性的创新,从而也成为大中型WPF项目中必须的模式。但,学习难度。。。。。。在这个《WPF记事本开发详解》的课程中,赵老师带领你在WPF中,从零开始一步步构建MVVM模式,直到让你亲自以WPF+MVVM的方式,让这个经典的“记事本”软件从你的手中“复活”。在课程中,赵老师会详细讲解WPF和MVVM中的各种技巧,让你从此爱上WPF+MVVM编程。

110,533

社区成员

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

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

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