2010-01-20 3 views
0

У меня есть панель в ведьме Я представляю график - 24 часа (24 x 60 min = 1 440 min).Могу ли я настроить ScrollBar на плавающий шаг?

Мне нужно установить шаг прокрутки на минуту. Очевидно, что минимальный размер такой панели должен быть 1440 пикселей.

Скажем, разрешение экрана на экране клиента (ширина) является 1280, так сказать, размер контейнера панели МАХ 1280. Теперь, если я хочу, чтобы мой шаг через минуту мне нужно установить шаг в контейнере ScrollBar, чтобы 1280/1440 = 0.(8) - но это невозможно, потому что шаг (myContainer.HorizontalScroll.SmallChange) является значением int ...

Могу ли я что-то сделать для этого?

EDIT

Может 0,2 пикселя в минуту можно считать inobservable ошибка, но если мой шаг будет 5 минут, это будет в действительности быть 4. (4) точек, но в скроллинга = 5, A шаг 10 минут будет = 8. (8) px: 10px. На экране 800x600 шаг 10min будет = 5. (5) px: 10px, поэтому каждые два клика (20 минут) у меня ошибка 4 пикселя. Эта «дельта» стала видимой.

Наконец, это образец, который НЕ работает - даже если я приеду, чтобы сделать видимую полосу прокрутки - странно видимость полосы прокрутки непредсказуемый ... - Я не могу выделить весь логотип VOLVO в 6 (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. Оно также будет в пикселях и будет соответствовать вашим минутам.

Смежные вопросы