[英]C# graphics drawlines draws broken lines
我正在使用C#圖形繪制ECG圖形。 我使用畫線法繪制曲線。 但是,線接頭看起來壞了。 我嘗試了平滑模式和capstyle的所有可用選項,沒有任何幫助。 這是示例graph1和示例graph2
代碼如下:
private void DrawCurve(Graphics g, cPoint[] data)
{
List<Point> ps = new List<Point>();
for (int i = 0; i < data.Length - 1; i++)
{
int x = data[i].x;
int y = data[i].y;
if (x > 0 && x < (Width))
{
ps.Add(new Point(x, y));
}
else if (x > Width)
{
using (Pen p = new Pen(Color.Yellow))
{
if (ps.Count > 0)
{
g.DrawLines(p, ps.ToArray());
ps.Clear();
}
}
}
}
}
為了避免折線,尤其是在以銳角繪制線時,您需要為這些屬性選擇正確的值:
p.MiterLimit = p.Width * 1.25f;
p.LineJoin = System.Drawing.Drawing2D.LineJoin.Round;
MiterLimit的默認值為10f,對於細線來說這是很大的方法! LineJoin還具有默認設置(斜接),該默認設置無濟於事。
你也應該嘗試用一下MiterLimit
值(保持鋼筆的寬度的范圍),也許還與你的Pen
的寬度本身; 請注意 , Pen.Width
是一個float
因此您可以將其提高到1.25左右。
如果您實際上是在談論某些地方的污跡,那是由於抗鋸齒; 通常是一件好事,但是對於更清晰的線條,請為您的Graphics對象將其關閉:
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None
LineCaps
僅適用於線序的起點和終點,因此它們對圖形沒有太大影響。
您正在畫短線。 這就是為什么您得到該結果的原因。 嘗試使用DrawCurve()代替DrawLines () 。
g.DrawCurve(p, ps.ToArray());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.