为什么我不能并排绘制像素?
Why I can not draw pixel side by side pixel?
我想在 C# 中使用 Canvas 绘制图片。
我必须控制图片每个像素的颜色,所以我使用矩形绘制它。
public void AddPixel(Canvas canvas, double x, double y)
{
Rectangle rec = new Rectangle();
Canvas.SetTop(rec, y);
Canvas.SetLeft(rec, x);
rec.Width = 1;
rec.Height = 1;
rec.Fill = new SolidColorBrush(Colors.Black);
canvas.Children.Add(rec);
}
它应该可以工作,但是当我想检查它并绘制简单的黑色图片时:
for (int y = 0; y < 50; y++)
{
for (int x = 0; x < 50; x++)
{
AddPixel(MandelbrotCanvas, x, y);
}
}
我得到了这样的东西 - 带有边框之类的矩形,像素之间 space:
为什么?谁能帮我画个清晰的黑图?
这个对我有帮助
rec.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
您的图像显示似乎存在某种程度的 supersampling(一种空间抗锯齿方法)。你的 1px 宽线变得比实际更柔和。消除锯齿有助于绘制看起来不像 "pixelated".
的斜线
超级采样线(放大):
别名线路:
设置 RenderOptions.EdgeModeProperty
以确保您的矩形未消除锯齿:
rec.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
如果这不起作用,请尝试添加设置 UIElement.SnapsToDevicePixels
属性:
rec.SnapsToDevicePixels = true;
我想这会阻止 subpixel rendering 个矩形。
我想在 C# 中使用 Canvas 绘制图片。 我必须控制图片每个像素的颜色,所以我使用矩形绘制它。
public void AddPixel(Canvas canvas, double x, double y)
{
Rectangle rec = new Rectangle();
Canvas.SetTop(rec, y);
Canvas.SetLeft(rec, x);
rec.Width = 1;
rec.Height = 1;
rec.Fill = new SolidColorBrush(Colors.Black);
canvas.Children.Add(rec);
}
它应该可以工作,但是当我想检查它并绘制简单的黑色图片时:
for (int y = 0; y < 50; y++)
{
for (int x = 0; x < 50; x++)
{
AddPixel(MandelbrotCanvas, x, y);
}
}
我得到了这样的东西 - 带有边框之类的矩形,像素之间 space:
为什么?谁能帮我画个清晰的黑图?
这个对我有帮助
rec.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
您的图像显示似乎存在某种程度的 supersampling(一种空间抗锯齿方法)。你的 1px 宽线变得比实际更柔和。消除锯齿有助于绘制看起来不像 "pixelated".
的斜线超级采样线(放大):
别名线路:
设置 RenderOptions.EdgeModeProperty
以确保您的矩形未消除锯齿:
rec.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);
如果这不起作用,请尝试添加设置 UIElement.SnapsToDevicePixels
属性:
rec.SnapsToDevicePixels = true;
我想这会阻止 subpixel rendering 个矩形。