<!--컨트롤전체에 Trigger일괄적용-->

<Window.Resources>

<Style TargetType="{x:Type Button}">

<Setter Property="HorizontalAlignment" Value="Center"/><!--적용할속성-->

<Setter Property="FontSize" Value="12"/>

<Style.Triggers>

<!--MouseEnter-->

<EventTrigger RoutedEvent="Button.MouseEnter">

<BeginStoryboard HandoffBehavior="Compose">

<!--HandoffBehavior="Compose" : 다른이벤트에 간섭을 받는다(?)-->

<Storyboard>

<DoubleAnimation

Storyboard.TargetProperty="FontSize"

To="48"

Duration="0:0:1"/>

</Storyboard>

</BeginStoryboard>

</EventTrigger>

 

<!--MouseLeave-->

<EventTrigger RoutedEvent="Button.MouseLeave">

<BeginStoryboard HandoffBehavior="Compose">

<Storyboard>

<DoubleAnimation

Storyboard.TargetProperty="FontSize"

To="12"

Duration="0:0:1"/>

</Storyboard>

</BeginStoryboard>

</EventTrigger>

</Style.Triggers>

</Style></Window.Resources>


by 피요히코~ 2009. 2. 25. 13:03

<Window x:Class="Day02.Ex21"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Ex21" Height="300" Width="300" Name="window1" Background="White">

<!--<Window> 이름과 기본배경 설정-->

 

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">

<RadioButton Content="Red">

<RadioButton.Triggers>

<EventTrigger RoutedEvent="RadioButton.Checked">

<BeginStoryboard>

<Storyboard>

<ColorAnimation

Storyboard.TargetName="window1"

Storyboard.TargetProperty="Background.Color"

<!--<window1> background 변경하는게 아니라

<background><solidbrush> 변경해야하므로-->

To="Red" AutoReverse="True" RepeatBehavior="3x"

Duration="0:0:1"/>

</Storyboard>

</BeginStoryboard>

</EventTrigger>

</RadioButton.Triggers>

</RadioButton>

</StackPanel>

</Window>


by 피요히코~ 2009. 2. 25. 13:03

<Canvas><Ellipse Width="50" Height="50" Fill="Red" Canvas.Left="0" Canvas.Top="0">

<Ellipse.Triggers><!--click이벤트는 지원x-->

<EventTrigger RoutedEvent="Ellipse.MouseDown">

<BeginStoryboard>

<Storyboard SpeedRatio="1">

<!--SpeedRatio : 애니메이션 진행속도 - "1"이면 1배속-->

<DoubleAnimation

Storyboard.TargetProperty="(Canvas.Left)"

From="0" To="250"

Duration="0:0:3"

AutoReverse="True"

RepeatBehavior="5x"/>

<DoubleAnimation

Storyboard.TargetProperty="(Canvas.Top)"

From="0" To="450"

Duration="0:0:1"

AutoReverse="True"

RepeatBehavior="5x"

AccelerationRatio="1"/>

<!--AccelerationRatio : 0~1(디폴트0) 증가하는 속도(비율) 바닥으로 갈수록 빨라짐(중력이 있는듯)-->

<!--DeccelerationRatio : AccelerationRatio 반대로 위쪽으로 갈수록 빨라짐(역중력느낌?)-->

</Storyboard>

</BeginStoryboard>

</EventTrigger></Ellipse.Triggers></Ellipse></Canvas>


by 피요히코~ 2009. 2. 25. 13:03

<EventTrigger RoutedEvent="Button.Click" SourceName="btn1">

<BeginStoryboard>

<Storyboard>

<DoubleAnimation

Storyboard.TargetName="btn1" Storyboard.TargetProperty="FontSize"

<!--Storyboard.TargetName 대상이 다를 경우에 사용한다-->

From="12" To="48"

Duration="0:0:1"

FillBehavior="HoldEnd"

<!--FillBehavior = "Stop" : story진행후 제자리로 돌아옴/ HoleEnd : 최종상태 유지(이게 디폴트)-->

IsAdditive="True"               

<!--IsAdditive="True" : 이벤트가 누적됨(계속 커짐) (false 디폴트)-->

AutoReverse="True"   

<!--AutoReverse="True" : 상태가 되돌아 갈때(FillBehavior Stop 이여야함) 다시 부드럽게 돌아감-->

RepeatBehavior="3x"/>

<!--BeginTime : 이벤트 호출까지의 시간( 호출때만 적용)-->

<!--RepeatBehavior="3x" : 작업 반복/ "1.5x" 경우는 중간에 멈춤/ "Forever" 경우는 무한반복. -->

         <!--RepeatBehavior="0:0:10" 같이 시간을 넣어도 작동됨( 시간만큼 반복)-->

</Storyboard>

</BeginStoryboard>

</EventTrigger>


by 피요히코~ 2009. 2. 25. 13:02
Xaml에서 구현

 

<Grid>

<Button FontSize="12" HorizontalAlignment="Center" VerticalAlignment="Center">

<Button.Content>Expanding Button</Button.Content>

<Button.Triggers>

<!--EventTrigger : C# 이벤트와 가장 비슷한 개념-->

<!--RoutedEvent : 이벤트 종류 설정-->

<EventTrigger RoutedEvent="Button.Click">

<BeginStoryboard><!--애니메이션 사용-->

<Storyboard>

<DoubleAnimation

From="12"

To="72"

Duration="0:0:.5"

Storyboard.TargetProperty="FontSize"/>

<!--수치값변화-->

<!-- 12부터 72까지 0시간00.5초동안 FontSize변화-->

</Storyboard>

</BeginStoryboard>

</EventTrigger>

</Button.Triggers>

</Button>

</Grid>

 



 

c#구현

 

private double init = 12; //멤버변수

private double max = 72;

private Button btn;

 

public Trigger()

{

InitializeComponent();

 

btn = new Button();

btn.Content = "Expanding Button";

btn.FontSize = init;

btn.HorizontalAlignment = HorizontalAlignment.Center; //정렬위치

btn.VerticalAlignment = VerticalAlignment.Center;

btn.Click += new RoutedEventHandler(btn_Click);//Click Event

 

this.Content = btn;//버튼추가

}

 

void btn_Click(object sender, RoutedEventArgs e)

{

DoubleAnimation da = new DoubleAnimation(); //DoubleAnimation

da.From = init; //시작값

da.To = max; //끝값

da.Duration = new Duration(TimeSpan.FromSeconds(2));//

btn.BeginAnimation(Button.FontSizeProperty, da);//실행

}



by 피요히코~ 2009. 2. 25. 13:01
| 1 |