2013-05-09 5 views
0

TabPage에 영구 그리드를 표시해야합니다. TabPage의 보이지 않는 부분 전체에 그림을 그릴 수 있고 스크롤 할 때 그래픽이 지워지 지 않으면 내 문제가 즉시 해결됩니다.TabPage에서 영구 그리기 그리기 (.Net, C#)

내가 생각할 수있는 유일한 해결책은 탭에서 스크롤 위치를 추적하고 그로부터 그리드를 그리는 것입니다.

처음부터이 작업을 수행하려면 TabPage.Paint에 대한 EventHandler를 만들어야했습니다.

//Code removed 

이 방법은 볼 탭의 그리드를 생성하는 수직 및 수평 라인을 그리는 그러나 그것은 페인트 이벤트 (즉, 스크롤링)이 발생할 때마다 그릴 계속 그래서 라인 겹치는 만들고 아무것도 정렬되지 탭의 현재 표시된 영역의 크기입니다.

답변

0

이 솔루션은 단지 의사 있음을 유의하십시오. 또한 스크롤에 응답해야합니다.

void form_draw() 
{ 
     spacingX = offsetX % scale * -1; 
     spacingY = offsetY % scale * -1; 

     if (form.HorizontalPosition != lastXPosition && form.VerticalPosition == lastYPosition) 
      lastStartX += spacingX; 
     else if (tab.HorizontalScroll.Value == lastXPosition && form.VerticalPosition != lastYPosition) 
      lastStartY += spacingY; 

     lastYPosition = form.VerticalPosition; 
     lastXPosition = form.HorizontalPosition; 

     for (int i = lastStartY; i < formHeight; i += scale) 
      form.draw(0, i, formWidth, i); 
     for (int i = lastStartX; i < formWidth; i += scale) 
      form.draw(i, 0, i, formWidth); 
} 
0

어쩌면 이런 일이 당신을 위해 작동합니다

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     const int gridSpacing = 20; 
     const int lineThickness = 1; 
     Bitmap bmp = new Bitmap(gridSpacing, gridSpacing); 
     using (System.Drawing.Pen pen = new System.Drawing.Pen(Color.Blue, lineThickness)) 
     { 
      using (Graphics G = Graphics.FromImage(bmp)) 
      { 
       G.Clear(this.BackColor); 
       G.DrawLine(pen, 0, bmp.Height - pen.Width, bmp.Width, bmp.Height - pen.Width); // horizontal 
       G.DrawLine(pen, bmp.Width - pen.Width, 0, bmp.Width - pen.Width, bmp.Height); // vertical 
      } 
     } 

     foreach (TabPage TP in tabControl1.TabPages) 
     { 
      TP.BackgroundImage = bmp; 
      TP.BackgroundImageLayout = ImageLayout.Tile; 
     } 
    } 
} 
+0

내가 필요한 것은 아니지만 감사합니다. – Glimpse

+0

다르게 정렬해야합니까? ... 정교 할 수 있습니까? 어쩌면 우리는 그것을 조정할 수 있습니다. 현재 접근 방식을 어떻게 든 변경하십시오. –