4-4-2.½½¶óÀÌ´õ

½½¶óÀÌ´õ´Â ¹üÀ§ ³»ÀÇ °ªÀ» º¸¿©Áֱ⵵ ÇÏ°í ÇÁ·Î±×·¡½º ¹Ù¿Í´Â ´Þ¸® »ç¿ëÀÚ°¡ ½æÀ» µå·¡±×Çϰųª Æ®·¢À» ÅÇÇÏ¿© °ªÀ» º¯°æÇÒ ¼öµµ ÀÖ´Ù. ¹üÀ§ÀÇ ÃʱⰪÀº 0~10À¸·Î ¼³Á¤µÇ¾î ÀÖ´Ù. Orientation ¼Ó¼ºÀ¸·Î ½½¶óÀÌ´õÀÇ ¹æÇâÀ» °áÁ¤Çϴµ¥ µðÆúÆ®´Â ¼öÆòÀÌ´Ù. ¼öÆò ½½¶óÀÌ´õ´Â ¿À¸¥ÂÊÀ¸·Î µå·¡±×ÇÒ ¶§ °ªÀÌ Áõ°¡ÇÏ¸ç ¼öÁ÷ ½½¶óÀÌ´õ´Â À§ÂÊÀ¸·Î µå·¡±×ÇÒ ¶§ Áõ°¡ÇÑ´Ù. isDirectionReversed ¼Ó¼ºÀ» true·Î ¼³Á¤Çϸé Áõ°¡ ¹æÇâÀÌ ¹Ý´ë°¡ µÇ´Âµ¥ Á÷°üÀûÀÌÁö ¸øÇϹǷΠ»ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù.

»ç¿ëÀÚ°¡ ½½¶óÀÌ´õ¸¦ Á¶ÀÛÇÏ¿© °ªÀ» º¯°æÇϸé ValueChanged À̺¥Æ®°¡ ¹ß»ýÇÑ´Ù. À̺¥Æ®ÀÇ Àμö·Î RoutedPropertyChangedEventArgs<double> ŸÀÔÀÇ °´Ã¼°¡ Àü´ÞµÇ¸ç ÀÌ °´Ã¼ÀÇ NewValue, OldValue ¼Ó¼ºÀ» ÅëÇØ º¯°æ ÀüÈÄÀÇ °ªÀ» ¾Ë ¼ö ÀÖ´Ù. °ªÀÌ º¯°æµÉ ¶§ Áï½Ã Àû¿ëÇÏ·Á¸é ValueChanged À̺¥Æ® Çڵ鷯¿¡¼­ NewValue°ªÀ» »ç¿ëÇÏ¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼öÆò, ¼öÁ÷ ¾ç¹æÇâÀ¸·Î µÎ °³ÀÇ ½½¶óÀÌ´õ¸¦ ¹èÄ¡ÇÏ°í ½½¶óÀÌ´õÀÇ ÇöÀç°ªÀ» ÅؽºÆ® ºí·Ï¿¡ Ãâ·ÂÇÑ´Ù.

 

Slider

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

    <StackPanel>

        <Slider Name="horzSlider" Margin="20"

                ValueChanged="horzSlider_ValueChanged" />

        <TextBlock Name="horzValue" Text="0" FontSize="50"/>

        <Slider Name="vertSlider" Margin="20" Height="200"

            Orientation="Vertical" ValueChanged="vertSlider_ValueChanged" />

        <TextBlock Name="vertValue" Text="0" FontSize="50"/>

    </StackPanel>

</Grid>

================================== CS =======================================

private void horzSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)

{

    horzValue.Text = e.NewValue.ToString();

}

 

private void vertSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)

{

    vertValue.Text = e.NewValue.ToString();

}

 

½½¶óÀÌ´õ´Â ÅÇÀ̳ª µå·¡±× µîÀÇ ÅÍÄ¡ µ¿ÀÛÀ¸·Î °ªÀ» Á¶Á¤ÇϹǷΠÅÍÄ¡ ¿µ¿ªÀÌ »ó´çÈ÷ ³Ð°Ô ¼³Á¤µÇ¾î ÀÖ´Ù. ½½¶óÀÌ´õÀÇ ÀÓÀÇ ¿µ¿ªÀ» ÅÍÄ¡ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ½½¶óÀÌ´õ ±Ùó¿¡´Â ÅÍÄ¡¸¦ ÀԷ¹޴ ´Ù¸¥ ÄÁÆ®·ÑÀ» µÎÁö ¾Ê´Â °ÍÀÌ ÁÁ´Ù. ºÎµæÀÌÇÏ°Ô ÅÍÄ¡ ÀÔ·Â ÄÁÆ®·ÑÀ» ÀÎÁ¢ÇÏ°Ô ¹èÄ¡ÇØ¾ß ÇÑ´Ù¸é À§ ¿¹Á¦Ã³·³ Àû´çÈ÷ ¸¶ÁøÀ» ÁÖ¾î °£°ÝÀ» ¶ç¿ö¾ß ÇÑ´Ù. ¸¶ÁøÀÌ ÀüÇô ¾øÀ¸¸é ½æÀÌ È­¸é °¡ÀåÀÚ¸®¿¡ ¹ÐÂøÇϹǷΠ¼Õ°¡¶ôÀ¸·Î µå·¡±×Çϱ⠰ï¶õÇÏ´Ù.

½æ ¾Õ µÚÀÇ Æ®·¢À» Ŭ¸¯Çϸé 1¾¿ °ªÀÌ Áõ°¨µÇ¸ç ½æÀ» µå·¡±×Çϸé ÀÓÀÇÀÇ °ªÀ¸·Î Á¶Á¤µÈ´Ù. ½æÀ» µå·¡±×ÇÒ ¶§´Â ²À Èò»ö ½æÀ» Á¤È®ÇÏ°Ô ´©¸¦ ÇÊ¿ä¾øÀÌ ÁÖº¯À» ´ëÃæ ´­·¯µµ Àß µå·¡±×µÈ´Ù. ½æ ÁÖº¯¿¡ ÅÍÄ¡¸¦ ¹Þ¾Æ µéÀÌ´Â Åõ¸íÇÑ ¿µ¿ªÀÌ Àֱ⠶§¹®ÀÌ´Ù. Æ®·¢Àº RepeatButtonÀ¸·Î ±¸ÇöµÇ¾î ÀÖÀ¸¹Ç·Î ´©¸¥ ä·Î °¡¸¸È÷ ÀÖÀ¸¸é °ªÀÌ °è¼Ó Áõ°¨µÈ´Ù.

µå·¡±×ÇÒ ¶§ Value´Â Á¤¹Ðµµ°¡ ³ôÀº ½Ç¼ö°ªÀ¸·Î º¯°æµÇ´Âµ¥ Á¤È®µµ°¡ ±»ÀÌ ÇÊ¿äÄ¡ ¾Ê´Ù¸é Á¤¼ö·Î ij½ºÆÃÇϰųª Àû´çÇÑ ÀÚ¸®¿¡¼­ ¹Ý¿Ã¸²ÇÏ¿© »ç¿ëÇÏ¸é µÈ´Ù. ValueChanged À̺¥Æ® Çڵ鷯¿¡¼­ À̺¥Æ® ÀμöÀÇ NewValue ¼Ó¼ºÀ¸·Î »õ °ªÀ» Á¶»çÇÒ ¼öµµ ÀÖ°í horzSlider.Value ó·³ °´Ã¼ÀÇ °ªÀ» ¹Ù·Î ÂüÁ¶Çصµ »ó°ü¾ø´Ù.

½½¶óÀÌ´õ´Â ³ÐÀº ¹üÀ§ÀÇ ¿¬¼ÓÀûÀÎ °ªÀ» ½Å¼ÓÇÏ°Ô ¼±ÅÃÇÏ´Â ¿ëµµ·Î ÀûÇÕÇÏ´Ù. º¼·ýÀ̳ª ¹à±â, ¿Âµµ µî Á¤È®µµº¸´Ù´Â ´ëÃæÀÇ °ªÀÌ ÇÊ¿äÇÑ °æ¿ì °ªÀ» ºü¸£°Ô Á¶Á¤ÇÒ ¼ö ÀÖ´Ù. ¼Õ°¡¶ôÀ¸·Î ½æÀ» µå·¡±×ÇÏ´Â µ¿ÀÛÀº Á¤È®µµ°¡ ¶³¾îÁö¹Ç·Î °³¼ö³ª °¡°Ý µî Á¤¹Ð¼ºÀ» ¿ä±¸ÇÏ´Â °ª ÀԷ¿¡´Â ÀûÇÕÇÏÁö ¾Ê´Ù. ÀÌ·± °ªÀº ÅؽºÆ® ¹Ú½º·Î ¼öÄ¡°ªÀ» ÀԷ¹޴ °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.

½½¶óÀÌ´õ ÀÚü´Â ÇöÀçÀÇ °ªÀ» Á¤È®ÇÏ°Ô º¸¿©ÁÖ´Â ±â´ÉÀÌ ¾øÀ¸¸ç ½æÀÇ À§Ä¡·Î ´ëÃæ ÆǺ°ÇØ¾ß ÇÑ´Ù. Á¤È®ÇÑ °ªÀ» »ç¿ëÀÚ¿¡°Ô º¸¿©ÁÖ·Á¸é À§ ¿¹Á¦Ã³·³ ÅؽºÆ® ºí·ÏÀ» ¹èÄ¡ÇÏ°í °ªÀÌ º¯°æµÉ ¶§¸¶´Ù ÅؽºÆ® ºí·Ï¿¡ °ªÀ» Ãâ·ÂÇÑ´Ù. ÇöÀç°ªÀ» º¸¿©Áֱ⸸ ÇϹǷΠÅؽºÆ® ºí·ÏÀÌ °¡Àå ÀÌ»óÀûÀÌÁö¸¸ Å°º¸µå ÀԷµµ °âÇؼ­ ¹ÞÀ¸·Á¸é ÅؽºÆ® ¹Ú½ºµµ ¹«¹æÇÏ´Ù.

½½¶óÀÌ´õ´Â À½¾ÇÀ̳ª µ¿¿µ»óÀÇ Àç»ý À§Ä¡¸¦ Ç¥½ÃÇÏ´Â ¿ëµµ·Îµµ »ç¿ëµÈ´Ù. ÃÑ Àç»ý ºÐ·®¸¸Å­ ¹üÀ§¸¦ ÁöÁ¤ÇÏ°í Àç»ýÀÌ ÁøÇàµÉ ¶§ ½½¶óÀÌ´õ¿¡ ÇöÀç À§Ä¡¸¦ º¸¿©ÁÖ¸ç »ç¿ëÀÚ°¡ ½½¶óÀÌ´õ¸¦ Á¶ÀÛÇϸé ÀÓÀÇ À§Ä¡·Î À̵¿ÇÑ´Ù. ÀÌ·² ¶§´Â ValueChanged À̺¥Æ®º¸´Ù´Â µå·¡±×¸¦ ³¡³»°í ¼Õ°¡¶ôÀ» ³õ´Â ½ÃÁ¡¿¡ ¹ß»ýÇÏ´Â LostMouseCapture À̺¥Æ®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ¿¹Á¦·Î Â÷ÀÌÁ¡À» ºñ±³ÇØ º¸ÀÚ.

 

SliderDrag

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

    <StackPanel>

        <TextBlock Name="txtPos1" Text="0" FontSize="50"/>

        <Slider Name="Slider1" Margin="20" Maximum="10000" LargeChange="10"

                ValueChanged="Slider1_ValueChanged" />

        <TextBlock Name="txtPos2" Text="0" FontSize="50"/>

        <Slider Name="Slider2" Margin="20" Maximum="10000" LargeChange="10"

            LostMouseCapture="Slider2_LostMouseCapture" />

    </StackPanel>

</Grid>

================================== CS =======================================

private void Slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)

{

    txtPos1.Text = Slider1.Value.ToString("0.00");

}

 

private void Slider2_LostMouseCapture(object sender, MouseEventArgs e)

{

    txtPos2.Text = Slider2.Value.ToString("0.00");

}

 

ÅؽºÆ® ºí·Ï°ú ½½¶óÀÌ´õ¸¦ µÎ½Ö ¹èÄ¡Çß´Ù. ÅؽºÆ® ºí·ÏÀº µ¿¿µ»ó Àç»ý À§Ä¡¸¦ º¸¿©ÁØ´Ù°í °¡Á¤ÇÏÀÚ. Àç»ý À§Ä¡¸¦ ½Å¼ÓÇÏ°Ô Á¶Á¤Çϱâ À§ÇØ ½æÀ» Ŭ¸¯ÇÒ ¶§ 10¸¸Å­¾¿ Áõ°¨Çϵµ·Ï ÇßÀ¸¸ç ³Ê¹« ±ä ½Ç¼ö¸¦ º¸¿©ÁÙ ÇÊ¿ä´Â ¾øÀ¸¹Ç·Î ¼Ò¼öÁ¡ µÎÀÚ¸®±îÁö ¹Ý¿Ã¸²ÇÏ¿© Àß¶ó¼­ Ãâ·ÂÇÑ´Ù. À§ÂÊÀº ValueChanged À̺¥Æ®¸¦ »ç¿ëÇÏ¿´°í ¾Æ·¡ÂÊÀº LostMouseCapture À̺¥Æ®¸¦ »ç¿ëÇÏ¿´´Ù.

ÅÇÀ» ÇÏ°Ç µå·¡±×¸¦ ÇÏ°Ç µÎ °æ¿ì ¸ðµÎ °ªÀÌ ¹Ù²î´Â °ÍÀº ¸¶Âù°¡ÁöÀÌ´Ù. ±×·¯³ª À§ÂÊÀº µå·¡±×Áß¿¡µµ °ªÀÌ ¹Ù²îÁö¸¸ ¾Æ·¡ÂÊÀº µå·¡±×Áß¿¡´Â ¹Ù²îÁö ¾Ê°í µå·ÓÇÒ ¶§ ¹Ù²ï´Ù. µ¿¿µ»óÀ̳ª À½¾ÇÀÇ Àç»ý À§Ä¡¸¦ º¯°æÇÏ´Â °ÍÀº »ó´çÇÑ ½Ã°£À» ¿ä±¸Çϴµ¥ µå·¡±×ÇÏ´Â Á·Á· »õ À§Ä¡¸¦ ã¾Æ °¡´Â °ÍÀº ¸ð¹ÙÀÏ ÀåºñÀÇ ´É·ÂÄ¡¸¦ ¿À¹öÇÏ´Â Èûµç ÀÛ¾÷ÀÌ´Ù.

½ÉÁö¾î ±× °­·ÂÇÑ µ¥½ºÅ©Å¾¿¡¼­µµ µ¿¿µ»ó Àç»ý À§Ä¡´Â µå·¡±×ÇÏ´Â Á·Á· ¹Ù²îÁö ¾Ê°í ¶ç¾ö ¶ç¾ö ¹Ù²ï´Ù. »ç½Ç µå·¡±×Áß¿¡ Àç»ý À§Ä¡¸¦ ÀÏÀÏÀÌ ¹Ù²Ü ÇÊ¿äµµ ¾ø°í ±×·¡ºÃÀÚ ¿µ»óÀÌ Á¦´ë·Î º¸ÀÌÁöµµ ¾Ê´Â´Ù. ÀÌ·± ÀÛ¾÷Àº °¡±ÞÀûÀÌ¸é ¼öÇà Ƚ¼ö¸¦ ÃÖ¼ÒÈ­ÇÏ´Â °ÍÀÌ ÁÁÀ¸¸é ÀÌ ¿ä±¸¿¡ ºÎÇÕÇÏ´Â À̺¥Æ®°¡ ¹Ù·Î LostMouseCaptureÀÌ´Ù.