wpf中如何画1个象素的线
原创文章标签 职场 休闲 wpf PushGuidelineSet GuidelineSet 文章分类 其它 编程语言
©著作权归作者所有:来自51CTO博客作者lijun4183的原创作品,请联系作者获取转载授权,否则将追究法律责任
wpf中如何画1个象素的线
https://blog.51cto.com/happyoldbear/95764
wpf中如何画1个象素的线
https://blog.51cto.com/happyoldbear/95764
很久没有更新博客了,最近实在是太忙了.
最近想用wpf做一个画线的程序,但是遇到了一个困难,就是wpf画的1个象素的线
始终存在锯齿,如何消除这个锯齿呢....?
在网上遍寻了很多资料,特别感谢这篇文章
但是这个贴子最终也没有解决方案,我研究了很久,终于
让我发现了使用PushGuidelineSet的秘密.
在我们使用DrawingContext Drawline的时候,需要设置参考线,可以避免锯齿和阴影.
(针对水平和垂直的线而言)
msdn里面提到过,如何消除锯齿.
一种方法就是:uielement的snaptodevicepixel=true
但是我们这里是要自己绘制,使用DrawingContext方法,msdn里面有一个DrawingGroup的方法.
但是哪里都没有对GuidelineSet的详细解释,如果在(x1,y1) (x1,y2)处画一条线该如何设置
Guideline呢?
其实Guideline的意思是:你设置一个逻辑象素点该点和设备象素点对齐
逻辑象素点就是wpf里面的independ device pixel
而设备象素点就是device pixel我们屏幕上的实际象素点
也就是说,如果你要在(x1,y1) (x1,y2)处画一条宽度为1的线
Guideline的x应该加一个 x1-m/2
(对于96dpi而言) m=1 x1-1/2=x1-0.5
对于120dpi而言 m=2 x1-0.8/2=x1-.04
还有一点需要注意的是Pen的thickness也需要改变
thickness*m
对于96dpi 为1
对于120dpi 为0.8
不知道有没有解释清楚,我也正在写该代码,写好后会传一段上来.
再解释一下:
如果你画 x1处的垂直线,那么线的中心肯定在x1处,线是有宽度的
假设宽度为w那么该线将跨越 x1-w/2和 x1+w/2
如果这两点正好在整数的象素点上,那么就不会有锯齿了,否则将会有锯齿.
下一篇:我的友情链接
举报文章
请选择举报类型
内容侵权
涉嫌营销
内容抄袭
违法信息
其他
补充说明
0/200
上传截图
格式支持JPEG/PNG/JPG,图片不超过1.9M
相关文章
-
WPF 如何画出1像素的线
ide 控件 javascript 商业 自定义控件 -
(转载)WPF中的动画——(一)基本概念
www..com/TianFang/p/4050845.html WPF的一个特点就是支持动
C# WPF 帧率 封装 动画效果 -
WPF画箭头
利用WPF绘制箭头,包括直线、贝塞尔曲线
WPF 箭头 -
WPF 绘图 和动画
wpf
html
lixiang37100 2011-11-21
lixiang37100 2011-11-21
麦迪 2008-08-29