gpt4 book ai didi

c# - 在c#中绘制二次方程曲线

转载 作者:行者123 更新时间:2023-12-02 15:44:54 31 4
gpt4 key购买 nike

我对 C# System Draw 非常陌生,所以请帮助我处理我的代码。我正在尝试绘制二次方程曲线,并使用“for”循环来为曲线点 10 个坐标。我已经多次测试了这段代码,当我启动代码时,什么也没有出现。此外,每当我运行代码时,我都会收到消息 ArgumentException 未处理,参数对于代码“g.DrawCurve(aPen, Points);”无效突出显示。请帮助我解决这个问题,我花了很多天试图解决。

{
public Form1()
{
InitializeComponent();
}

protected override void OnPaint(PaintEventArgs e)
{

float a = 10, b = 30, c = 10;
double x1, x2, delta, cx1, cx2, y1, y2;
int icx1, iy1, icx2, iy2;
delta = (b * b) - (4 * a * c);
x1 = ((b * (-1)) + Math.Sqrt(delta)) / (2 * a);
x2 = ((b * (-1)) - Math.Sqrt(delta)) / (2 * a);
for (int i = (-10); i <= 10; i = i + 1)
{
cx1 = i * x1;
cx2 = i * x2;
y1 = (cx1 * cx1 * a) + (cx1 * b) + c;
y2 = (cx2 * cx2 * a) + (cx2 * b) + c;
icx1 = Convert.ToInt32(cx1);
iy1 = Convert.ToInt32(y1);
icx2 = Convert.ToInt32(cx2);
iy2 = Convert.ToInt32(y2);


Graphics g = e.Graphics;
Pen aPen = new Pen(Color.Blue, 1);
Point point1 = new Point(icx1, iy1);
Point point2 = new Point(icx2, iy2);
Point[] Points = { point1,point2 };
g.DrawCurve(aPen, Points);
aPen.Dispose();
g.Dispose();


}

最佳答案

关键问题是代码处理 Graphics 对象。在第二次迭代中,Graphics 对象已被释放,对 DrawCurve 的调用将失败。

正如评论中提到的,DrawCurve 方法需要数组中有 3 个点。请参阅 MSDN Page for DrawCurve 的备注

应尽可能减少对笔的所有其他 Dispose 调用,以防止重新创建如此多的笔。

至于图表:我不完全确定你要做什么,但如果你想画抛物线,你不应该求解二次方程,而是将 x 值放入方程中。

伪代码:

for x = -10 to 10 step 3

if SavePoint == null

x1 = x
y1 = a * x1 * x1 + b * x1 + c

point1 = TransformToLocalCoordinates(x1, y1)

Else

point1 = SavePoint

End if

x2 = x + 1
y2 = a * x2 * x2 + b * x2 + c

point2 = TransformToLocalCoordinates(x2, y2)

x3 = x + 2
y3 = a * x3 * x3 + b * x3 + c

point3 = TransformToLocalCoordinates(x3, y3)

DrawCurve point1, point2, point3

SavePoint = point3

next

关于c# - 在c#中绘制二次方程曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405113/

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