gpt4 book ai didi

c# - 在 C# 中绘制的更快的方法

转载 作者:行者123 更新时间:2023-11-30 14:37:47 26 4
gpt4 key购买 nike

我正在尝试使用我编写的以下方法绘制 Mandelbrot 分形:

public void Mendelbrot(int MAX_Iterations)
{
int iterations = 0;

for (float x = -2; x <= 2; x += 0.001f)
{
for (float y = -2; y <= 2; y += 0.001f)
{
Graphics gpr = panel.CreateGraphics();

//System.Numerics
Complex C = new Complex(x, y);
Complex Z = new Complex(0, 0);

for (iterations = 0; iterations < MAX_Iterations && Complex.Abs(Z) < 2; Iterations++)
Z = Complex.Pow(Z, 2) + C;

//ARGB color based on Iterations
int r = (iterations % 32) * 7;
int g = (iterations % 16) * 14;
int b = (iterations % 128) * 2;
int a = 255;

Color c = Color.FromArgb(a,r,g,b);
Pen p = new Pen(c);

//Tranform the coordinates x(real number) and y(immaginary number)
//of the Gauss graph in x and y of the Cartesian graph
float X = (panel.Width * (x + 2)) / 4;
float Y = (panel.Height * (y + 2)) / 4;

//Draw a single pixel using a Rectangle
gpr.DrawRectangle(p, X, Y, 1, 1);
}
}
}

它可以工作,但是速度很慢,因为我需要添加缩放的可能性。使用这种绘制方法是不可能的,所以我需要一些快速的东西。我尝试使用 FastBitmap ,但这还不够,SetPixel的 FastBitmap 不会提高绘图速度。所以我正在非常快速地搜索一些东西,我知道 C# 不像 CASM , 但在 C# 中执行此操作会很有趣和 Winforms .

欢迎提出建议。

编辑: Mendelbrot Set Zoom Animation

最佳答案

我认为首先将 RGB 值填充到内存中的字节数组中,然后使用 LockBits 将它们批量写入 Bitmap 会更有效和 Marshal.Copy(点击示例链接),最后使用 Graphics.DrawImage 绘制位图。

您需要先了解一些基本概念,例如步幅和图像格式,然后才能让它发挥作用。

关于c# - 在 C# 中绘制的更快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8871038/

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