Tag: bitmap

如何将图像像素的值作为RGB读入2d数组?

我正在为我的方形平台平台游戏制作一个二维地图编辑器,当我意识到我真的可以使用一个图像编辑器,它具有重绘相邻像素的能力等等,所以我想我应该尝试通过应用程序读取绘制的水平然后将其转换为轻量级格式。 我不确定是否使用位图格式是必须的,但我想,读取特定像素比使用PNG更容易。 所以我的目标是打开一个图像,遍历每个像素,寻找适合我的图块方案的颜色,并将相应的图块放入块数组中。 注意:我已经有了轻量级格式,所以我只需要将像素值读入数组。 解决方案:我的草图如下所示: Bitmap myBitmap = new Bitmap(@”input.png”); for (int x = 0; x < myBitmap.Width; x++) { for (int y = 0; y < myBitmap.Height; y++) { Color pixelColor = myBitmap.GetPixel(x, y); // things we do with pixelColor } } 例2: Bitmap myBitmap = new Bitmap(@”input.png”); for (int x = 0; x […]

SetPixel太慢了。 是否有更快的方法来绘制位图?

我正在制作一个小型油漆程序。 我在位图上使用SetPixel来绘制线条。 当画笔大小变大时,如同25个像素一样,会有明显的性能下降。 我想知道是否有更快的方法来绘制位图。 以下是该项目的背景: 我正在使用位图,以便我可以利用图层,如Photoshop或GIMP。 正在手动绘制线条,因为这最终将使用图形输入板压力来改变线条长度的大小。 这些线条最终应沿着边缘进行抗锯齿/平滑处理。 我将包括我的绘图代码,以防万一这是缓慢而不是Set-Pixel位。 这是在绘画发生的窗口: private void canvas_MouseMove(object sender, MouseEventArgs e) { m_lastPosition = m_currentPosition; m_currentPosition = e.Location; if(m_penDown && m_pointInWindow) m_currentTool.MouseMove(m_lastPosition, m_currentPosition, m_layer); canvas.Invalidate(); } MouseMove的实现: public override void MouseMove(Point lastPos, Point currentPos, Layer currentLayer) { DrawLine(lastPos, currentPos, currentLayer); } DrawLine的实现: // The primary drawing code for most tools. […]