gpt4 book ai didi

c# - 为图片框中的每个像素绘制颜色

转载 作者:行者123 更新时间:2023-11-30 16:08:00 25 4
gpt4 key购买 nike

谁能帮帮我:我想为图片框的每个像素绘制颜色

这是我到目前为止所做的:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication25
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
int x, y;
for (y = 0; y < 200; y++)
{
for (x = 0; x < 200; x++)
{
((Bitmap)pictureBox1.Image).SetPixel(x, y, Color.FromArgb(255, 255, 0));
}
}
}

}
}

我添加了一个计时器,这样我就可以看到绘制每个像素的进度。

代码在内存中绘制的问题-延迟-然后放入图片框

我想在每个 y = 0 和 x = 0 到 200、y =1 x = 0 到 200、y=2 x=0 到 200 等之间绘制颜色

最佳答案

每次你的计时器滴答作响时,你都想用(不同的?)颜色绘制另一个像素,对吧?

您需要做的是在 timer1_Tick 方法之外声明当前的 x 和 y 坐标,并在每次绘制内容时相应地增加它们的值。

要立即看到结果,您还应该在 timer1_Tick() 中调用 pictureBox1.Refresh()。这是我使用类似于此的模式绘制 200x200 位图的快速解决方案: All 24-bit RGB colors .

public partial class Form1 : Form
{
private int bitmapWidth = 200;
private int bitmapHeight = 200;
private int currentX = 0;
private int currentY = 0;

public Form1()
{
InitializeComponent();
pictureBox1.Image = new Bitmap(bitmapWidth, bitmapHeight);
}

private void button1_Click(object sender, EventArgs e)
{
if (timer1.Enabled)
{
timer1.Stop();
}
else
{
timer1.Start();
}
}

private void timer1_Tick(object sender, EventArgs e)
{
double partWidth = (bitmapWidth / (double)16);
int r = (int)(255 * currentX / partWidth) % 256;
int g = (int)(255 * (currentY % partWidth) / partWidth) % 256;
int b = (int)(Math.Floor(currentX / partWidth) + Math.Floor(currentY / partWidth) * 16);

((Bitmap)pictureBox1.Image).SetPixel(currentX, currentY, Color.FromArgb(r, g, b));
pictureBox1.Refresh();
if (currentX < bitmapWidth - 1)
{
currentX++;
}
else if (currentY < bitmapHeight - 1)
{
currentX = 0;
currentY++;
}
else
{
timer1.Stop();
}
}
}

您可以改变通过计算 currentX、currentY 和 partWidth 产生的颜色。注意:我假设您绘制的是方形位图。绘制成矩形需要更多的工作。同样的事情适用于不同的尺寸。

关于c# - 为图片框中的每个像素绘制颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29956709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com