C# 在WPF中无缝拼接矩形,同时保持亚像素精度?
我已经在问题中描述了这个问题,但我对那里给出的答案并不满意 我画了一个条形图,画了很多彼此相邻的矩形。根据包含它们的画布的比例,由于亚像素渲染,它们之间存在可见的小间隙 我从上面的问题中学到了如何使我的矩形与屏幕像素相匹配,从而消除这种效果 不幸的是,我的图表显示的条形图可能比像素多。除了微小的间隙(表现为颜色饱和度的周期性变化)之外,这种方法效果很好。如果我用屏幕像素捕捉每个条,大多数条会消失,所以我正在寻找另一种解决方案C# 在WPF中无缝拼接矩形,同时保持亚像素精度?,c#,wpf,tiles,aliasing,C#,Wpf,Tiles,Aliasing,我已经在问题中描述了这个问题,但我对那里给出的答案并不满意 我画了一个条形图,画了很多彼此相邻的矩形。根据包含它们的画布的比例,由于亚像素渲染,它们之间存在可见的小间隙 我从上面的问题中学到了如何使我的矩形与屏幕像素相匹配,从而消除这种效果 不幸的是,我的图表显示的条形图可能比像素多。除了微小的间隙(表现为颜色饱和度的周期性变化)之外,这种方法效果很好。如果我用屏幕像素捕捉每个条,大多数条会消失,所以我正在寻找另一种解决方案 提前谢谢 问题原因 亚像素形状在像素内使用alpha混合。不幸的是,没
提前谢谢 问题原因 亚像素形状在像素内使用alpha混合。不幸的是,没有alpha混合算法可以在邻接时使矩形无缝混合 例如,如果:
- 背景颜色为白色
- 前景颜色为黑色,并且
- 有两个矩形,每个矩形覆盖一个像素的一半
<Rectangle Canvas.Left="0" Canvas.Top="0" Width="1.5" Height="2" Fill="Red" />
<Rectangle Canvas.Left="1.5" Canvas.Top="0" Width="1.5" Height="4" Fill="Red" />
<Path Data="M0,0 L0,2 L1.5,2 L1.5,4 L3,4 L3,0 Z" Fill="Red" />
如何强制初始渲染为高分辨率
要强制以更高分辨率渲染,请执行以下操作:
var geo = new PathGeometry();
var figure = new PathFigure();
var segment = new PolyLineSegment();
segment.Points.Add(...);
segment.Points.Add(...);
segment.Points.Add(...);
segment.Points.Add(...);
segment.Points.Add(...);
figure.Segments.Add(segment);
geo.Figures.Add(figure);