2012-08-29 2 views
0

컨트롤 페인트 이벤트를 사용하여 응용 프로그램에서 그래픽 개체를 그립니다. 모든 개체의 크기는 밀리미터의 크기 단위로 저장되므로 그래픽 개체의 경우 PageUnit으로 '밀리미터'를 사용합니다. 어떤 이유에서든 솔리드 이외의 DashStyle을 사용하여 모양을 그리면 아주 예기치 않은 크기로 그려집니다.예상치 못한 스케일로 드로잉 한 점선 모양

아래 코드 예제에서 나는 두 선이 다른 선 위에 그려지는 것을 볼 것으로 예상하지만 큰 선에서 다른 점으로 그려지는 빨간색 파선은 얻을 수 있습니다.

제가 누락 된 아이디어가 있습니까?

using System; 
using System.Drawing; 
using System.Drawing.Drawing2D; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication6 
{ 
    public partial class Form1 : Form 
    { 
     private Pen solidBlackPen = new Pen(Color.Black, 1); 
     private Pen dashedRedPen = new Pen(Color.Red, 1) { 
              DashStyle = DashStyle.Dash 
             }; 

     private Point point1 = new Point(5, 5); 
     private Point point2 = new Point(35, 5); 

     public Form1() 
     { 
      InitializeComponent(); 

      this.BackColor = Color.White; 
      this.Paint += new PaintEventHandler(Form1_Paint); 
     } 

     private void Form1_Paint(object sender, PaintEventArgs e) 
     { 
      e.Graphics.PageUnit = GraphicsUnit.Millimeter; 

      e.Graphics.DrawLine(solidBlackPen, point1, point2); 
      e.Graphics.DrawLine(dashedRedPen, point1, point2); 
     } 

    } 
} 

나는 새로운 스크린 샷을 업로드 할 수 없기 때문에.

+1

의 게시 나는이 코드를 실행하면 있기 때문에 귀하의 질문에서 사용할 수있는 것보다 문제에 더가 있어야합니다 선이 하나의 선 위로 그려집니다. – pdriegen

+0

당신이 맞을 것 같네요. 서로 다른 OS를 사용하는 다른 컴퓨터에서 동일한 실행 파일을 실행하려고 시도했지만 그 중 일부는 예상했던 결과를 얻었습니다. 고맙게도 나는이 문제에 대한 해결책을 찾을 수 있었지만 여전히 원인을 알지 못합니다. 악의는 누군가 다른 사람을 만나는 응답을 게시합니다. – gaz54

답변

0

몇 가지 테스트가 끝나면 특정 OS/프레임 워크에서만 mybe가 발생하는 버그가 발생합니다. 이 모양을 그리기 전에 다음 줄을 추가 한 저를 해결하기 위해 관리 어떤

:

e.Graphics.ScaleTransform(1, 1);