c# - 如何在 C# 中实现绘图器

标签 c# math graphics gdi+ calculator

所以我正在编写一个图形计算器。到目前为止,我有一个半功能绘图器,但是,我很难在准确的图形和平滑的曲线之间取得良好的平衡。

当前的实现(半伪代码)看起来像这样:

for (float i = GraphXMin; i <= GraphXMax; i++)
{
    PointF P = new PointF(i, EvaluateFunction(Function, i)
    ListOfPoints.Add(P)
}
Graphics.DrawCurve(ListOfPoints)

问题是因为它只在每个整数值处添加一个点,当转折点不落在整数上时,图形最终会扭曲(例如 sin(x)^2)。

alt text

我尝试将 i 递增一些更小的值(例如 0.1),这可行,但图表看起来非常粗糙。

alt text

我正在使用 C# 和 GDI+。我将 SmoothingMethod 设置为 AntiAlias,所以这不是问题,正如您从第一张图中看到的那样。绘制包含很多点的曲线是否存在某种问题?这些点是否应该精确定位在像素上?

我敢肯定你们中的一些人以前做过非常相似的事情,所以有什么建议吗?当你在做的时候,你对用渐近线绘制函数有什么建议吗?例如1/x^2

附言我不是在寻找可以完成所有这些工作的库 - 我想自己编写。

最佳答案

好的,我解决了这个问题。在绘图过程中的某个地方,我使用了 int 而不是 float。

关于c# - 如何在 C# 中实现绘图器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4699732/

相关文章:

c# - 两个 BST 叶子之间的节点之和

c# - 管理 .NET WinForm 应用程序中的线程

c# - Python 比 Java/C# 慢吗?

android - 如何检测漫画书页上的矩形区域?

java - java中图形不绘制图像

c# - WCF 行为配置作为 .NET Remoting

android - 如何在 Android 中实际显示数学公式

c++ - 在 C 或 C++ 中是否有用于矩阵计算的开源模板库?

java - 连续分数

php - 将渲染的 HTML 保存为图像