Posts tagged ·

c#

·...

SL3 : Rendering – 반복 메서드

no comments

public static event System.EventHandler Rendering
System.Windows.Media.CompositionTarget의 멤버

요약:
핵심 Silverlight 렌더링 프로세스가 프레임을 렌더링할 때 발생합니다.

아래와 같이 반복을 시킬 수 있다.

source download

XAML

1
2
3
4
5
6
7
8
9
10
11
<UserControl x:Class="_20091114_LayoutRendering.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
    <StackPanel x:Name="LayoutRoot" Background="Black">
        <TextBlock x:Name="tb1" FontSize="20" Foreground="Wheat" Margin="5"></TextBlock>
        <TextBlock x:Name="tb2" FontSize="20" Foreground="Wheat" Margin="5"></TextBlock>
        <TextBlock x:Name="tb3" FontSize="20" Foreground="Wheat" Margin="5"></TextBlock>
    </StackPanel>
</UserControl>

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace _20091114_LayoutRendering
{
    public partial class MainPage : UserControl
    {
        int renderCount = 0;
 
        public MainPage()
        {
            InitializeComponent();
            CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
        }
 
        void CompositionTarget_Rendering(object sender, EventArgs e)
        {
            renderCount += 1;
            tb1.Text = "sender = " + sender.ToString();
            tb2.Text = "e = " + e.ToString();
            tb3.Text = "renderCont = " + renderCount;
        }
    }
}

XAML을 사용하여 TextBlock을 그린 후 C#으로 반복 프레임을 등록하여 화면을 렌더링하는 개념이다. 기존에 MaxFrameRate에 대해서 알게되었다. 이것으로 현재 MaxFrameRate이 60으로 기본 값으로 작동된다는 것을 알 수 있다.

SL3 : C#에서 FrameRate setting

1 comment

실버라이트에서는 프레임 셋팅이 없는 줄 알았는데 찾았다.

public int MaxFrameRate { set; get; }
    System.Windows.Interop.Settings의 멤버
 
요약:
초당 렌더링할 최대 프레임 수를 가져오거나 설정합니다.
 
반환 값:
초당 렌더링할 최대 프레임 수를 지정하는 정수 값입니다. 기본값은 60입니다.

아래와 같은 C# 코드에 간단하게 적용하면 된다.

 public partial class MainPage : UserControl
{
     public MainPage()
    {
        InitializeComponent();
        App.Current.Host.Settings.MaxFrameRate = 30;
     }
}

SL3 : Image Movement(DoubleAnimation)

1 comment

요번에는 Image Class를 사용해서 이미지의 움직임을 만들어봤다.
기본적으로 두가지 방법으로 코드가 가능한다. XAML(쟈멜)과 C#에서 바로 코드를 작성할 수 있다. 현재는 초보 수준이므로 두가지를 동시에 사용하고 있다. 이전 만들어봤던 Rectangle Movementd 에서 Image Class로 바꿔 코딩만 했다.


source download

Image Class를 읽어 보면 ImageSource Class를 상속 받고 있으며, BitmapImage Class를 생성이 된다는 것을 확인 할 수 있다. 아직 내가 margin을 사용하는 법을 정확히 몰라 요번 것은 Canvas Class를 사용하여 객체 네임을 참조하여 이동하게 하였다.

이전 코드와 비슷하기 때문에 변경된 XAML 코드만 적어두겠다.

1
2
3
4
5
6
<!-- Canvas에서 자유롭게 이동할 Image 객체를 그려둔다. (좌,상단 좌표 0,0) -->
<Canvas x:Name="myImg" Width="80" Height="80">
        <Image  Source="/silverlight/ver3/images/jinuiny.jpg" 
                    Stretch="None"
         />
</Canvas>

다음에는 C# 코드만을 사용해서 작성해 봐야 겠다.