C# WPF-在画布上创建和绘制图像

C# WPF-在画布上创建和绘制图像,c#,wpf,image,canvas,C#,Wpf,Image,Canvas,我有WPF帆布。我需要画50万个不同颜色的像素。我试着一个像素一个像素地画,但是画得太慢了。所以我决定创建图像并绘制它。我不知道,如果这是最好的方法,那么如果你知道更好的方法,告诉我 所以我的问题是,如何在画布上创建和绘制图像?我找过了,但什么也没找到 我有二维的颜色数组,我需要画它们,可能是通过图像,所以我怎么做呢 谢谢,索普提克 编辑:现在,我使用这段代码,但绘制100*100像素也需要几秒钟 for(int i = 0; i < w; i++) { for(int j = 0;

我有WPF帆布。我需要画50万个不同颜色的像素。我试着一个像素一个像素地画,但是画得太慢了。所以我决定创建图像并绘制它。我不知道,如果这是最好的方法,那么如果你知道更好的方法,告诉我

所以我的问题是,如何在画布上创建和绘制图像?我找过了,但什么也没找到

我有二维的颜色数组,我需要画它们,可能是通过图像,所以我怎么做呢

谢谢,索普提克

编辑:现在,我使用这段代码,但绘制100*100像素也需要几秒钟

for(int i = 0; i < w; i++)
{
   for(int j = 0; j < h; j++)
   {
        Draw(i, j, Brushes.Aqua);
   }

使用您当前的方法并不“糟糕”。由于您拥有的2d阵列的巨大尺寸,它可能会很慢,但在此过程中,通过两个
for loops
循环是正常的。一些可能的解决方案是将每一行作为
rect
加载到
画布上,以显示正在处理的图像,但如果没有必要,我将研究如何处理像素数据,并可能一次处理多个像素数据


如果你想遵循你现在可能有的代码(我们真的需要看一些代码),你应该试着一次画多个像素。我试过:`for(int I=0;Iprivate void Draw(int x, int y, SolidColorBrush b) { Line l = new Line(); l.Stroke = b; l.X1 = x; l.Y1 = y; l.X2 = x + 1; l.Y2 = y + 1; l.StrokeThickness = 1; canvas.Children.Add(l); }