2012-12-05 3 views
2

여러 가지 작업 (회전, 확대/축소, 그리기 등)을 할 수있는 컨트롤에 3D 이미지가 표시됩니다. 이 컨트롤은 Dock을 패널에 채우고 도구 모음을 사용하여 이미지 작업을 제어 할 수 있습니다.패널 내에서 바둑판 식으로 배열 할 컨트롤을 동적으로 정렬합니다.

이미지를 동적으로 타일링하여 여러 이미지를 동시에 볼 수 있기를 바랍니다. 따라서 상기 사용자는 한 이미지를 개방

  • 경우들이
  • 사용자 4 개 이미지를 선택하면 측
  • 나란히 도시되어 공간
  • 사용자 2 개 이미지를 선택하면, 100 %를 차지 그들은 바둑판 식으로 배열되어있다.
  • 등 ...

기본적이 쉽게 MDI 형태로 달성 될 수 있지만,이 불가능하므로,이 모듈은 애플리케이션에 중첩된다. 이 크기를 계산하고 TableLayoutPanel을 사용하여 수동으로이 모든 작업을 수행 할 수 있지만 그 트릭을 거기에 뭔가 있어야합니다.

제안 사항?

참고 : 난의 WinForm에서 오전과 내가 DevExpress의를 할 그냥 타일이 필요하면 11

답변

1

, TableLayoutPanel 완전히 할 수있는 당신을 위해 :

private void btnNewImage_Click(object sender, EventArgs e) 
    { 
     if (imgCount == 0) 
      tlp.Controls.Add(new Button { Text = "Image " + ++imgCount, Dock = DockStyle.Fill }, 0, 0); 
     else 
     { 
      // tlp is the TableLayoutPanel which is docked as Dock.Fill 
      if (tlp.RowCount == tlp.ColumnCount) 
      { 
       tlp.ColumnCount++; 
       for (int i = 0; i < tlp.RowCount; i++) 
        tlp.Controls.Add(new Button { Text = "Image " + ++imgCount, Dock = DockStyle.Fill }, tlp.ColumnCount - 1, i); 
       tlp.ColumnStyles.Clear(); 
       for (int i = 0; i < tlp.ColumnCount; i++) 
        tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, (float)100.0/(float)tlp.ColumnCount)); 
      } 
      else 
      { 
       tlp.RowCount++; 
       for (int i = 0; i < tlp.ColumnCount; i++) 
        tlp.Controls.Add(new Button { Text = "Image " + ++imgCount, Dock = DockStyle.Fill }, i, tlp.RowCount - 1); 
       tlp.RowStyles.Clear(); 
       for (int i = 0; i < tlp.RowCount; i++) 
        tlp.RowStyles.Add(new RowStyle(SizeType.Percent, (float)100.0/(float)tlp.RowCount)); 
      } 
     } 

당신은 당신의 제어 new Button을 대체 할 수 이름, 버튼을 예제 컨트롤로 사용했습니다. 이 코드는 Add new button을 누르면 레이아웃에 행이나 열이 추가되어야한다고 가정합니다. 당신이 원하는대로 무엇이든 그것을 사용자 정의 할 수 있습니다.

희망이 도움이됩니다.

관련 문제