2013-08-08 3 views
0

C#으로 새 응용 프로그램을 개발하고 있는데 도움이 필요합니다.C#의 일부 그림 상자에 선 그리기

다음과 같이 만들고 싶습니다. 뭔가 이상한 선 그리기. 좀 더 구체적으로 말하자면, 코드로 생성하는 그림 상자가 있으며, 응용 프로그램을 시작할 때 보이지 않습니다.

Enter image description here

을 그리고 제가 이런 식으로 원하는 것은 :

Enter image description here

내가 첫 번째 라인을 그리기 위해 사용하고있는 코드는 내가 원하는 경우

은 예입니다 이 :

Graphics g; 
Pen p; 

void drawline(){ 
    g = this.CreateGraphics(); 
    p = new System.Drawing.Pen(Color.Red, 15); 
    g.DrawLine(p, new Point(10, 150), new Point(900, 150)); 
} 

추 신 : 두 번째 줄을 유감스럽게 생각합니다 (Paint :))

+0

나는 두 번째 줄을 좋아한다. :) –

답변

1

양식에 그림 상자를 두는 대신 선을 그리기 전에 그림을 그릴 수있었습니다.

g.DrawImage(image, point) 

메이비 이런 일이 발생할 수 있습니까?

Bitmap _bitmap = new Bitmap(PictureBox1.Width, PictureBox1.Height); 

    Dictionary<int, Image> _images = new Dictionary<int, Image>(); 
    System.Drawing.Pen _redPen = new System.Drawing.Pen(Color.Red, 15); 
    bool _linePresent = false; 

    int[] _imageIndex = { 1, 2, 1 }; 

    public void Init() 
    { 
     _images.Add(1, Image.FromFile("Melon.png")); 
     _images.Add(2, Image.FromFile("Pineapple.png")); 
     PictureBox1.Image = _bitmap; 
    } 

    public void Update() 
    { 
     Graphics graphics = Graphics.FromImage(_bitmap); 
     graphics.Clear(Color.White); 
     graphics.DrawImage(_images[_imageIndex[0]], 50, 100); 
     graphics.DrawImage(_images[_imageIndex[1]], 350, 100); 
     graphics.DrawImage(_images[_imageIndex[2]], 650, 100); 

     if (_linePresent) 
      graphics.DrawLine(_redPen, new Point(10, 150), new Point(900, 150)); 

    } 

이미지를 새로 고침 updateing 몇 가지 문제 /가있을 수 있습니다. 그러나 나는 그것을 시험하지 않았다.

+0

그림 상자는 그림이 무작위로로드되고 문장이 참이면 선을 그으므로 그럴 수 없다. –

+0

비트 맵을 찾아서 업데이트해야 할 때마다 그려야합니다. 그런 다음 비트 맵을 1 picturebox의 Image 속성에 할당합니다. 이렇게하면 BackPage 렌더링이 있고 깜박임을 방지 할 수 있습니다. –

+0

나는 그것을 사용할 수 없다. 왜냐하면 나는 매트릭스 인 그림 상자를 가진 몇몇 루프를 가지고 있고 나는 또한 이미지 매트릭스를 가지고있다. 나는 그 모든 것을 사용한다. ... –

1

이미지 위에있는 직사각형 (붉은 색 레이블)을 실제로 사용할 수 있습니다. 그래픽 명령을 사용하는 것보다 훨씬 간단합니다.

+0

나는 당신의 이상을 시도했으나 여전히 라벨을 가지고있다. 비록 내가 label1.bringtofront()를 사용했다 할지라도, 그림 상자 앞에 있지는 않습니다. –