GSI

<Window x:Class="WpfApplication.MainWindow"

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

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

        Title="MainWindow">

    <Canvas>

        <Button x:Name="MyButton" Loaded="MyButton_Loaded">Button</Button>

    </Canvas>

</Window>

 

        private void MyButton_Loaded(object sender, RoutedEventArgs e)

        {

            const string TranslateTransformName = "MyAnimatedTranslateTransform";

 

            TranslateTransform tt = new TranslateTransform(50, 50);

            NameScope.SetNameScope(tt, new NameScope());

            this.RegisterName(TranslateTransformName, tt);

            this.MyButton.RenderTransform = tt;

 

            Storyboard sb = new Storyboard();

 

            DoubleAnimation daX = new DoubleAnimation(50, 200, new Duration(new TimeSpan(0, 0, 5)));

            daX.AutoReverse = true;

            daX.RepeatBehavior = RepeatBehavior.Forever;

            Storyboard.SetTargetName(daX, TranslateTransformName);

            Storyboard.SetTargetProperty(daX, new PropertyPath(TranslateTransform.XProperty));

            sb.Children.Add(daX);

 

            DoubleAnimation daY = new DoubleAnimation(50, 200, new Duration(new TimeSpan(0, 0, 5)));

            daY.AutoReverse = true;

            daY.RepeatBehavior = RepeatBehavior.Forever;

            Storyboard.SetTargetName(daY, TranslateTransformName);

            Storyboard.SetTargetProperty(daY, new PropertyPath(TranslateTransform.YProperty));

            sb.Children.Add(daY);

 

            DoubleAnimation daW = new DoubleAnimation(50, 200, new Duration(new TimeSpan(0, 0, 5)));

            daW.AutoReverse = true;

            daW.RepeatBehavior = RepeatBehavior.Forever;

            Storyboard.SetTargetName(daW, "MyButton");

            Storyboard.SetTargetProperty(daW, new PropertyPath(Button.WidthProperty));

            sb.Children.Add(daW);

 

            DoubleAnimation daH = new DoubleAnimation(50, 200, new Duration(new TimeSpan(0, 0, 5)));

            daH.AutoReverse = true;

            daH.RepeatBehavior = RepeatBehavior.Forever;

            Storyboard.SetTargetName(daH, "MyButton");

            Storyboard.SetTargetProperty(daH, new PropertyPath(Button.HeightProperty));

            sb.Children.Add(daH);

 

            sb.Begin(this.MyButton);

        }

Posted by gsi
:

세삼 느끼는 거지만 msdn의 예제는 너무 xaml 중심으로 되어 있다.
이런 코드의 예제가 절실하게 필요한 때인거 같다.

-- XAML CODE—

 

<Storyboard x:Key="OnCalendarLoaded">

 <DoubleAnimationUsingKeyFrames BeginTime="00:00:00"

Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(SkewTransform.AngleX)"

Storyboard.TargetName="TargetShape">

                        <SplineDoubleKeyFrame   KeySpline="0.5,0.5,0.5,0.5" Value="0" KeyTime="00:00:00"/>

                        <SplineDoubleKeyFrame   KeySpline="0.5,0.5,0.5,0.5" Value="15" KeyTime="00:00:01"/>

            </DoubleAnimationUsingKeyFrames>

      </Storyboard>

….

          <Rectangle Stroke="White" Margin="0,20,0,0"

            Width="120" Height="100"

            x:Name="TargetShape"

            Fill="sc#0.400752217, 0.3677801, 0.3677801, 0.3677801">

              <Rectangle.RenderTransform>

                <TransformGroup>

                  <TranslateTransform X="0" Y="0"/>

                  <ScaleTransform ScaleX="0" ScaleY="0"/>

                  <SkewTransform AngleX="15" AngleY="0"/>

                  <RotateTransform Angle="0"/>

                  <TranslateTransform X="0" Y="0"/>

                  <TranslateTransform X="0" Y="0"/>

                </TransformGroup>

              </Rectangle.RenderTransform>

            </Rectangle>

 

Void StartAnimationsFunction()

{

      Storyboard story = (Storyboard)this.FindResource("OnCalendarLoaded");

      BeginStoryboard(story); // IT WORKS!

}

 


 

-- C# CODE --

 

<Storyboard x:Key="OnCalendarLoaded">

      </Storyboard>

 

 

Void StartAnimationsFunction ()

{

      Storyboard story = (Storyboard)this.FindResource("OnCalendarLoaded");

story.Children.Add(getAnimation1("TargetShape"));

      BeginStoryboard(story); // NOTHING HAPPENS!

}

       

        private DoubleAnimationUsingKeyFrames getAnimation1(string name)

        {

            DoubleAnimationUsingKeyFrames anim = new DoubleAnimationUsingKeyFrames();

            anim.BeginTime = new TimeSpan(0, 0, 0);

 

            Storyboard.SetTargetName(anim, name);

            Storyboard.SetTargetProperty(anim,

                new PropertyPath("0.1[2].2", new DependencyProperty[] {

                    UIElement.RenderTransformProperty,

                    TransformGroup.ChildrenProperty,

                    SkewTransform.AngleXProperty}));

 

            anim.KeyFrames.Add(new SplineDoubleKeyFrame(0, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0)), new KeySpline(.5, .5, .5, .5)));

            anim.KeyFrames.Add(new SplineDoubleKeyFrame(15, KeyTime.FromTimeSpan(new TimeSpan(0, 0, 1)), new KeySpline(.5, .5, .5, .5)));

 

            return anim;

        }

Posted by gsi
:

XmlDataProvider 를 Blend에서 선언할때는 특정 경로를 통해서 입력 하게 되어 있다.
그것을 xaml 파일에서 바꾸는 방법은 잘 모르겠고,

템플릿 디자인 할때는 Blend에서 바로 적용해서 해보는게 편하니 그렇게 해야 할거 같다.

해당 주소에 대한 xml 파일 정보를 읽어 오기 위해서 아래와 같이 작성하였다.

[xaml]
<XmlDataProvider x:Key="memberDS" d:IsDataSource="True" Source="http://localhost/azit/tazit/member.xml"/>

[cs]
private void OnClick(object sender, System.Windows.RoutedEventArgs e)
{
 XmlDataProvider provider = this.Resources["memberDS"] as XmlDataProvider;
 if(provider != null) provider.Source = new Uri(UrlText.Text);
}

1. xaml 파일의 Source 부분은 당장 없어도 이상은 없다.
2. UrlText.Text 부분은 텍스트 에디터를 입력 받는 컨트롤이다.
3. 버튼 이벤트를 통해서 Url 경로를 넘겨 주고 자동으로 로딩되게 처리해봤다.
Posted by gsi
:

가끔은....

내 일상 2007. 9. 19. 02:09 |

내가 힘들게 한 사람이 몇명이나 될까..
문득 그 생각이 들었다.

하지만 그 책임은 내가 져야 하는것도 안다.
언제일까?..
아마도 한참 좋아 지고 있을때.. 안좋은 일이 생기는 거니까.
난 지금이 좋다. 뭐든지 할 수 있고, 내가 좋아 하는 사람과 살고 있고..

지금일까?..

하지만 내가 나이가 먹은 만큼 내가 받아 들이고 가야 할 것도 많은거 같다.

언제까지 지금 마음 변치 말고 앞을 향해서 가보자..

그게 인생인듯 하다..

나이가 들면서 삶의 무게를 조금씩 짊어지고 가면서
그 짐들을 조금씩 해결해 가는것..

사는 의미는 어떻게 보면 허무하면서도..
그걸 해결하고 조금더 나은 삶을 살고 싶어 하는 욕망이 있기 때문에
살수 있는거 아닐까?..

Posted by gsi
:

몇주동안 풀리지 않던 문제가 오늘 풀렸다.

HTTP를 사용한 XML 데이터 접근 쪽에서 해결하였다.
IIS 설정 부터 해서 템플릿 까지 여러가지 설정이 있었지만.
결과적으로 Blend(wpf) 쪽에서 원하는 데이터를 접근해서 사용하는 것은 가능해졌다.

이제 그 결과를 화면에 어떻게 뿌려 볼지 및 기타 동작들에 대해서 조금씩 더 추가해보자.

iamgsi 화이팅!!!
Posted by gsi
: