2014-06-08 2 views
0

C# 그래픽을 사용하여 ECG 그래프를 그립니다. drawlines 메서드를 사용하여 커브를 그립니다. 그러나 라인 조인트는 부서져 보입니다. 나는 smoothing 모드와 capstyle의 모든 가능한 옵션을 시도했지만 아무도 도움이 안된다. 여기 sample graph1sample graph2C# 그래픽 드로우 라인이 파선을 그립니다.

코드는 다음입니다 :

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(); 
       } 
      } 
     } 
    } 
} 
+0

전적으로 정상적으로 보입니다. 표준 모니터의 해상도가 얼마나 떨어지는지를 보여주는 시끄러운 신호 같은 것은 없습니다. 이를 해결하기 위해서는 의료 비즈니스에서 흔히 볼 수있는 하드웨어에 돈을 투자해야합니다. –

답변

0

당신은 짧은 선을 그릴 수 있습니다. 이것이 당신이 그 결과를 얻는 이유입니다. DrawLines() 대신 DrawCurve()을 사용해보십시오.

g.DrawCurve(p, ps.ToArray()); 
+0

손으로 그린 ​​빨간 선은 좋은 조언이지만 심전도 그래프는 내가 생각하기에 차라리 _invented_ 곡선을 그리지 않을 것이라고 생각합니다. – TaW

1

것은 당신이 이러한 속성에 대한 올바른 값을 선택해야 라인이 날카로운 각도에서 그려 특히 점선을 방지하려면 :

p.MiterLimit = p.Width * 1.25f; 
p.LineJoin = System.Drawing.Drawing2D.LineJoin.Round; 

MiterLimit하는 방법이다 10F의 기본을 가지고 얇은 라인을 위해 큰! LineJoin에는 도움이되지 않는 기본값 (Mitre)도 있습니다.

또한 실험 MiterLimit 값을 조금 당신의 Pen의 폭 자체 어쩌면 또한 (펜의 폭의 범위 내에서 유지)해야하고

;

당신이 실제로 어떤 지점에서 더러워진 모습에 대해 이야기하는 경우,이 앤티 앨리어싱 때문이다 .. Pen.Widthfloat은 그래서 당신은 1.25 정도에 올릴 수있다 것을 메모를 할;

e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None 

LineCaps는 시작 -와 라인 - 시퀀스의 엔드 포인트만을위한, 그래서 그들은 훨씬 상관 없어 : 보통,하지만 선명 라인이 당신의 그래픽을 해제에 대한 좋은 점은 객체 귀하의 그래프.

+0

신속한 답변을 위해 @TaW를 주셔서 감사합니다. 아무런 조언도 문제를 해결하지는 않지만 많은 것을 배웠습니다. 앤티 앨리어싱을 끄는 것을 제외하고는 이미 앤티 앨리어싱을 시도했지만 결과에 만족스럽지 않습니다. MiterLimit 값과 LineJoin 스타일의 거의 모든 조합을 시도했지만 여전히 도움이되지 않습니다. 그것은 어떤 식 으로든 그것을 향상시키지 않습니다, 그리고 나는 거기에 무슨 일이 일어나고 있는지 전혀 모른다. – msuzer

+0

한스는 좋은 지적을했습니다. 어쩌면 문제는 실제로 래스터 그래픽의 해상도를보고 있으므로 그 한계가 있음을 알 수 있습니다. 사실 망막 디스플레이가 저렴 해지고 있지만 얼마나 많은 것이 필요합니까?! 네가 펜을 들고 자 노력 했니? 마지막으로 : 페인트 프로그램에서 예제 이미지를 향상 시켜서 원하는 모양을 볼 수 있다고 생각하십니까? – TaW

+0

커브가 많은 짧은 수직선으로 구성된 또 다른 이미지를 추가했습니다 (미안합니다. 두 개의 연속 된 수직선의 조인트가 깨지거나 금이 간다는 것을 알 수 있습니다 (글쎄, 아마도 그것을 설명하는 데 정확한 단어를 찾을 수 없습니다). 인접한 선 조각들이 서로 연결되어 보이게하고 싶습니다. 이것이 디스플레이 하드웨어의 문제라고 생각하지 않습니다. 나는 Pen으로 연주했습니다. 조금만 기울이면, 트릭을하지는 않았지만, Pen.Width를 2.0으로 올리면 커브가 흐려져서 디스플레이가 초점이 맞지 않는 것처럼 이상합니다. – msuzer