2014-02-18 1 views
1

문서 기반 응용 프로그램을 만들고 텍스트의 수평선을 그립니다. 그러나 선은 직선이어서는 안됩니다. 나는이 같은 선을 그리기를 원한다.
Zigzag line지그재그 선을 그리는 방법은 무엇입니까?

현재 개체를 그리는 데 System.Graphics 개체를 사용하고 있습니다.

private void DrawLine(Graphics g, Point Location, int iWidth) 
{ 
    iWidth = Convert.ToInt16(iWidth/2); 
    iWidth = iWidth * 2; 
    Point[] pArray = new Point[Convert.ToInt16(iWidth/2)]; 
    int iNag = 2; 
    for (int i = 0; i < iWidth; i+=2) 
    { 
     pArray[(i/2)] = new Point(Location.X + i , Location.Y + iNag); 
     if (iNag == 0) 
      iNag = 2; 
     else 
      iNag = 0; 
    } 
    g.DrawLines(Pens.Black, pArray); 
} 

업데이트 : 코드 위
잘 작동하고 라인은 완벽하게 애플리케이션 성능에 있지만,이 코드의 효과를 그립니다. 이 일을하는 또 다른 방법이 있습니까?

+0

위의 코드가 작동하지 않습니까? 아니면 더 나은 솔루션을 찾고 계십니까? – PMF

+0

죄송합니다.이 사양을 추가하는 것을 잊어 버렸습니다. 그래서 나는 나의 질문을 편집했다. – Shell

답변

1

당신이 빠른 도면은 단지 당신이 필요로하는 것보다 더 큰 폭으로 원하는 라인의 PNG로 이미지를 만든 다음 이미지를 그려하려면 다음

private void DrawLine(Graphics g, Point Location, int iWidth) 
{ 
    Rectangle srcRect = new Rectangle(0, 0, iWidth, zigzagLine.Height); 
    Rectangle dstRect = new Rectangle(Location.X, Location.Y, iWidth, zigzagLine.Height); 

    g.DrawImage(zigzagLine, dstRect, srcRect, GraphicsUnit.Pixel); 
} 

zigzagLine 비트 맵입니다.

valter

+0

답장을 보내 주셔서 감사합니다. 그러나 선은 다른 선 너비로 늘이거나 비명을 지르게됩니다. 이미지 크기가 50px이고 10px와 90px의 두 줄이 있으면 어떻게됩니까? – Shell

+0

@ Nimesh 그래서 내가 너보다 * 너비가 큰 *이라고 말한 것이다. 내가 의미했던 바는 프로그램에서 사용하게 될 최대 너비를 찾아이 너비에 1을 더한 비트 맵을 만든다는 것입니다. –