【发布时间】:2015-10-20 17:28:15
【问题描述】:
我想在 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);
}
}
我得到这样的东西 - 带有边框的矩形,像素之间的空间:
为什么?谁能帮我画一张清晰的黑色图片?
【问题讨论】:
-
也许这与将
5而不是y传递给AddPixel方法有关? -
我复制了错误的代码。我在使用 AddPixel(..., x, y) 时得到的这张图片
-
尝试添加这个:
rec.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased);。如果这不起作用,请尝试添加rec.SnapsToDevicePixels = true; -
是的!对我有帮助,非常感谢!你能把它写成答案吗?
-
如果您正在制作逐像素绘图,我还建议您使用
WriteableBitmap。在当前状态下,您的方法(使用Rectangles 制作每像素绘图)可能会受到性能不佳的影响,因为您每次绘制框架时都会创建和处理 2500 个 UI 元素。
标签: c# wpf canvas drawing pixel