2010-01-20 5 views
0

나는 24 시간 (24 x 60 min = 1 440 min)의 타임 라인을 나타내는 마녀로 패널을 가지고 있습니다.부동 스텝을 ScrollBar로 설정할 수 있습니까?

잠깐 내 스크롤바의 단계를 설정해야합니다. 그러한 패널의 최소 크기는 1440 픽셀이어야합니다.

의 클라이언트 화면 (폭)의 화면 해상도가 1280라고하자, 그래서 내 단계는 내가 스크롤 바의 용기에 단계를 설정해야합니다 분 수 원하는 경우 패널 컨테이너의 최대 크기는 지금 1280 라고 1280/1440 = 0.(8) -하지만 불가능합니다. 단계 (myContainer.HorizontalScroll.SmallChange)가 int 값 ...

이 작업을 수행 할 수 있습니까?

편집

어쩌면 분당 0.2 픽셀은 inobservable 오류로 간주 될 수 있지만, 내 단계는 5 분 될 경우, 그것은 실제로 4 (4) PX하지만 스크롤에 = 5하는 것 10 분의 단계는 = 8이됩니다. (8) px : 10px. 800x600 화면에서 10 분 단계는 5가됩니다. (5) px : 10px, 각 2 클릭 (20 분)에서 4 픽셀 오류가 발생합니다. 이 "델타"가 보입니다.

마지막으로,이 샘플을 작동하지 않습니다이다 - 나는 스크롤 볼 수 있도록 도착하더라도 - 이상한 스크롤 가시성은 ... 예측할 수 없다 - 내가 6의 모든 VOLVO 로고를 스크롤 할 수 없습니다 (60Maxim/10smallChange는) ... 단계 :

alt text http://lh6.ggpht.com/_1TPOP7DzY1E/S1eOPUlVvQI/AAAAAAAAC8M/ZFWDI_aaJxI/s800/panels.png

디자이너 :

this.panel2.BackgroundImage = ....Resources.volvo_logo; 
this.panel2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; 

코드 :

public partial class Form1 : Form 
{ 
    private System.Windows.Forms.Button button1; 
    private System.Windows.Forms.Panel panel1; 
    private System.Windows.Forms.Panel panel2; 

    public Form1() 
    { 
     InitializeComponent(); 

     panel1.AutoScroll = false; 

     panel1.HorizontalScroll.Maximum = 60; 
     panel1.HorizontalScroll.SmallChange = 10; 

     panel1.HorizontalScroll.LargeChange = 10; 
     panel1.HorizontalScroll.Visible = true; 

     panel1.Scroll += new ScrollEventHandler(panel1_Scroll); 
    } 

    void panel1_Scroll(object sender, ScrollEventArgs e) 
    { 
     Console.WriteLine(
      "Scroll: OldVal {0}, NewVal {1}, Orientation {2}, Type {3}", 
      e.OldValue, e.NewValue, e.ScrollOrientation, e.Type); 
    } 
} 

답변

0

ClientSize를 픽셀 (1440)로 설정하고 작은 변경 = 1로 둡니다. 또한 픽셀 단위로 표시되며 분과 일치합니다.

관련 문제