Window/Surface2010. 7. 4. 23:21

Surface SDK에는 특별한 컨트롤들이 몇 가지 추가되어 있습니다.

그 중 LibraryStackLibraryBar에 대해 간단한 예제를 통해 알아보겠습니다.

 

컨트롤의 이름에서도 느낄 수 있듯이

LibraryStack은 Item으로 추가된 객체를 추가되는 순서에 따라 차곡차곡 쌓아 놓을 수 있는 컨트롤입니다.

객체를 터치 시 다음 객체가 앞으로 나오게 됩니다.

 

LibraryBar는 Item으로 추가된 객체들을 Bar모양의 컨트롤 안에 줄줄이 담을 수가 있습니다.

기본적으로는 가로 형태의 Bar로 좌우로 슬라이드 시키며 객체들을 볼 수 있습니다.

 

또한 두 컨트롤들은 기본적으로 Drag and Drop을 사용할 수 있습니다.

 

각 컨트롤들은 기본적으로 다음과 같은 생김새를 가지고 있습니다.

 

그림과 같이 컨트롤안의 객체를 밖으로 Drag 시킬 수 있습니다.

이 때 LibraryBar는 객체가 이동이 되어 지는 것이 아닌 복사된 이미지가 이동되며 해당 객체는 그림의 빨간  테두리가

쳐진 객체처럼 비활성화가 되어 집니다.

밖으로 Drag 되어진 객체는 기본적으로 다시 컨트롤 안으로 들어가게 됩니다.

이때 해당 객체를 현 위치에 위치 시키고 싶다면 Drop 이벤트에서 처리를 해주어야 합니다.

 

LibraryBar에 대해 좀 더 설명을 하자면,

기본적으로 2열로 객체가 추가되며 Rows 속성을 통해 값을 변경 할 수 있습니다.

또한 추가된 객체는 활성화 상태이며 SetIsItemDataEnabled 메서드를 통해 해당 객체의 활성화 여부를 변경할 수 있습니다.

그룹을 지정할 수 있는데 PropertyGroupDescriptionGroupDescriptions의 컬렉션에 추가시키면 됩니다.

자세한 내용은 SDK 문서를 참고 하시기 바랍니다.

 

예제의 소스는 다음과 같이 ItemTemplate를 사용하였습니다.

< XAML >

 

 

< C# >

   protected override void OnInitialized(EventArgs e)

  {

      base.OnInitialized(e);

 

      ObservableCollection<string> items = new ObservableCollection<string>();

 

      string[] imagesPath = Directory.GetFiles(@"C:\Users\Public\Pictures\Sample Pictures", "*.jpg");

 

      foreach (string path in imagesPath)

      {

          items.Add(path);

      }

 

      libraryStack.ItemsSource = items;

      libraryBar.ItemsSource = items;

  }

 

SDK URL :

LibraryStack : ms-help://MS.VSCC.v90/MS.VSIPCC.v90/Microsoft.Surface/Microsoft.Surface.SDK/ProgrammersGuide/

OtherSurfaceSpecificControls/UsingLibraryStackControl.htm

 

LibraryBar : ms-help://MS.VSCC.v90/MS.VSIPCC.v90/Microsoft.Surface/Microsoft.Surface.SDK/ProgrammersGuide/

OtherSurfaceSpecificControls/UsingLibraryBarControl.htm

 

다음 포스팅에서는 이 예제에 Drop 이벤트 처리를 추가하는 내용에 대해 다루겠습니다.

 

'Window > Surface' 카테고리의 다른 글

[ WPF ] TagVisualization  (0) 2010.07.15
[ WPF ] Surface LibraryStack & LibraryBar - Drag and Drop  (0) 2010.07.10
[ WPF ] Surface ScatterView  (0) 2010.07.03
[ WPF ] Surface SDK 예제  (0) 2010.07.03
[ WPF ] Surface SDK 설치  (2) 2010.07.02
Posted by 열ㅇl
Window/Surface2010. 7. 3. 21:17

이번 포스팅에서는 ScatterView를 사용하는 간단한 예제를 만들어 보겠습니다.

 

ScatterView는 Item으로 포함된 객체들을 이동, 회전, 크기조절을 가능하게 해주는 패널입니다.

Item으로 포함되는 객체들의 위치와 회전 각도는 항상 랜덤하게 설정됨으로 추가 시 항상 다른 위치와 각도로 나타납니다.

 

추가되는 Item의 형식은 ScatterViewItem으로 기본적으로 ScatterViewItem으로 추가 시키지 않아도

ScatterViewItem의 Content로 설정이 되어 추가가 되어 집니다.

 

ScatterViewItem는 다음과 같은 속성이 있습니다.

 MaxWidth

 최대 넓이 지정

 MaxHeight

 최대 높이 지정

 MinWidth

 최소 넓이 지정

 MinHeight

 최소 높이 지정

 Center

 부모 요소에서의 위치( 객체의 중심점을 기준으로 합니다. )

 Orientation

 회전 각도

 

ScatterViewItemRenderTransform의 영향을 받지 않음으로 Center와 Orientation의 속성으로 상태를 변경해야 합니다.

또한 Panel.SetZIndex 메서드를 통해 zindex 속성을 변경할 수 있습니다.

 

예제는 간단히 이미지들을 ScatterView에 추가시키는 내용으로 소스는 다음과 같이

ItemTemplate 을 사용하였습니다.

 

먼저 WPF용 Surface를 선택한 후 프로젝트를 생성합니다.

 

 

Surface에서는 다음과 같이 Surface 컨트롤을 사용해야만 터치를 할 수 있습니다.

 

< XAML >

         <s:ScatterView x:Name="scatterView">
            <s:ScatterView.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding"}" Stretch="Fill" />
                </DataTemplate>
            </s:ScatterView.ItemTemplate>
        </s:ScatterView
>

 

< C# >

   private void SurfaceWindow_Loaded(object sender, RoutedEventArgs e)

  {

       scatterView.ItemsSource =

               Directory.GetFiles(@"C:\Users\Public\Pictures\Sample Pictures", "*.jpg");

   }

 

< 실행 화면 >

Simulator를 먼저 실행 시킨 후 실행을 해야 모든 기능을 사용하실 수 있습니다.

 

 

ScatterView 자세한 내용은 SDK 문서를 참고 하시기 바랍니다.

URL : ms-help: //MS.VSCC.v90/MS.VSIPCC.v90/Microsoft.Surface/Microsoft.Surface.SDK/ProgrammersGuide/

ScatterView/ScatterView.htm

 

다음 포스팅에서는 LibrayStack과 LibraryBar를 사용한 간단한 예제에 대해 알아 보겠습니다.

'Window > Surface' 카테고리의 다른 글

[ WPF ] TagVisualization  (0) 2010.07.15
[ WPF ] Surface LibraryStack & LibraryBar - Drag and Drop  (0) 2010.07.10
[ WPF ] Surface LibraryStack & LibraryBar  (0) 2010.07.04
[ WPF ] Surface SDK 예제  (0) 2010.07.03
[ WPF ] Surface SDK 설치  (2) 2010.07.02
Posted by 열ㅇl
Window/Surface2010. 7. 3. 17:28

이전 포스팅에서 Surface SDK를 설치하셨다면 이번에는 간단한 구성에 대해 알아보겠습니다. ^^

 

   

 

 

 

 

 

 

 

시작 프로그램에서 설치된 폴더를 열어 보시면 그림과 같이 항목들이 보입니다.

중요한 항목들은 다음과 같습니다.

 

Sample 들을 실행 및 소스를 보실 수 있습니다.

Surface SDK에 대한 문서를 보실 수 있습니다.

 

 

Identity Tag를 설정 합니다.

Surface Table과 같은 환경으로 프로그램을 실행시키기 위한 시뮬레이터 입니다.

 

Water 예제의 이미지를 변경합니다.

 

우선 Surface Simulator를 실행시켜 보겠습니다.

다음과 같이 물결 효과를 보실 수 있는 예제가 기본적으로 실행이 됩니다.

 

[ Tools ]

빨간 테두리 : 손가락 모양으로 터치 이벤트를 발생시킵니다.

파란 테두리 : 정해진 값의 태그를 인식할 수 있습니다. ( byte 태그 )

녹색 테두리 : 정해진 값의 태그를 인식할 수 있습니다. ( Identity 태그 )

 

[ Record ]

현재 화면을 녹화 하거나 파일을 재생할 수 있습니다.

 

다음은 샘플들을 실행시켜 보겠습니다.

우선 Sample 폴더에 들어가서 압축을 푼 후 더에 들어가면 다음과 같은 항목들이 있습니다.

 

빨간 테두리의 배치 파일을 실행시키면 프로젝트들을 일괄적으로 빌드 하면서 Simulator(Shell)의

실행 목록에 자동으로 추가 시켜 줍니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Simulator를 다시 실행시킨 후 화면의 네 귀퉁이를 누릅니다. ( 누른 위치에 따라 화면이 보여지는 상하 방향이 달라집니다. )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그림과 같이 추가된 프로그램들을 볼 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

몇 가지 예제들을 실행시킨 모습입니다.

         

 

작동법은 다음과 같습니다.

 

Drag :

마우스 왼쪽 버튼 클릭 후 이동합니다.

 

Scale & Rotate :

마우스 왼쪽 버튼을 클릭 후 오른쪽 버튼을 클릭 하여 

터치점을 인식시킨 후 마우스 왼쪽 버튼을 누른 후 

움직입니다.

 

- 터치점을 해제 하려면 터치점이 인식된 곳을

마우스 왼쪽 버튼을 누른후 오른쪽 버튼을 누릅니다.

 

         

다음 포스팅에서는 간단한 프로그램 작성을 해 보겠습니다.

'Window > Surface' 카테고리의 다른 글

[ WPF ] TagVisualization  (0) 2010.07.15
[ WPF ] Surface LibraryStack & LibraryBar - Drag and Drop  (0) 2010.07.10
[ WPF ] Surface LibraryStack & LibraryBar  (0) 2010.07.04
[ WPF ] Surface ScatterView  (0) 2010.07.03
[ WPF ] Surface SDK 설치  (2) 2010.07.02
Posted by 열ㅇl
Window/Surface2010. 7. 2. 18:10

요즘 Surface 관련 프로젝트를 진행하고 있기 때문에 개발 과정에서 얻어지는 것들에 대해서

간단히 포스팅 하겠습니다. ^^

 

우선 Surface 개발을 하기 위해선 SDK를 설치해야 겠죠.

 

Surface SDK를 설치하기 위해선 다음의 선 과정들이 필요합니다.

 

 

 

기본적으로 비스타 환경 이상부터 실행이 되고 비주얼 C# 2008는 설치되어 있어야 합니다.

SDK 1.0 은 VS 2008 에서만 지원됩니다.

또한 XNA 개발을 지원하기 때문에

XNA Framework Redistributable 2.0 또는 XNA GameStudio Express 2.0 가 설치되어 있어야 합니다.

 

다운로드 주소:

XNA Framework Redistributable 2.0 : 

http://www.microsoft.com/downloads/details.aspx?FamilyID=15fb9169-4a25-4dca-bf40-9c497568f102&displaylang=en

 

Surface SDK 1.0 SP1 :

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3db8987b-47c8-46ca-aafb-9c3b36f43bcc

 

Surface에 대한 자세한 내용은 다음의 홈페이지에서 확인하시면 됩니다.

http://www.microsoft.com/surface/en/us/default.aspx

 

- 설치가 완료된 후 비주얼 스튜디오를 실행하게 되면 다음과 같이 Surface 메뉴가 생기게 됩니다.

 

 

'Window > Surface' 카테고리의 다른 글

[ WPF ] TagVisualization  (0) 2010.07.15
[ WPF ] Surface LibraryStack & LibraryBar - Drag and Drop  (0) 2010.07.10
[ WPF ] Surface LibraryStack & LibraryBar  (0) 2010.07.04
[ WPF ] Surface ScatterView  (0) 2010.07.03
[ WPF ] Surface SDK 예제  (0) 2010.07.03
Posted by 열ㅇl
Window/WPF2010. 6. 20. 20:50

OpenCv를 사용하여 캠 화면을 띄우는 방법에 대한 포스팅입니다.

 

들로네 님의 큰 도움이 있었습니다. ^^

들로네님 블로그 : http://blog.naver.com/tramper2

들로네님 운영 카페 : http://cafe.naver.com/opencvsharp.cafe

 

C#을 이용한 OpenCv와 DirectShow에 관한 유용한 정보가 많으니 들려보시면 많은 도움이 되실 겁니다.

 

캠의 목록 선택에 따라 화면을 보여주는 예제로

Timer를 이용하여 카메라의 각 프레임을 WriteableBitmap으로 변환하여 Image에 보여주는 방식입니다.

캠의 목록을 얻어오는 부분은 DirectShow를 사용하였습니다.

 

소스는 다음과 같습니다.

    public partial class Window1 : Window

    {

        private CvCapture capture;

        private DispatcherTimer timer;

        private WriteableBitmap writeBitmap;

        private IplImage src;

 

        public Window1()

        {

            InitializeComponent();           

        }

 

        protected override void OnInitialized(EventArgs e)

        {

            base.OnInitialized(e);

 

            // 캠 목록 얻어오기

            foreach (DirectShowLib.DsDevice ds in

                DirectShowLib.DsDevice.GetDevicesOfCat

                  (DirectShowLib.FilterCategory.VideoInputDevice))

            {

                camList.Items.Add(ds.Name);

            }

 

            SetTimer();

        }

 

        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)

        {

            base.OnClosing(e);

 

            if (capture != null)

            {

                capture.Dispose();

            }

 

            if (timer != null)

            {

                timer.Stop();

            }

        }

 

        private void initCamera(int camIndex)

        {

            try

            {

                // 해당 카메라 가져오기

                capture = CvCapture.FromCamera(CaptureDevice.DShow, camIndex);

 

                // 이미지에 비트맵 연결

                writeBitmap = new WriteableBitmap(capture.FrameWidth,

                                          capture.FrameHeight, 96, 96, PixelFormats.Bgr24, null);

                camDisplay.Source = writeBitmap;

            }

            catch(Exception e)

            {

                if (timer != null)

                {

                    timer.Stop();

                }

 

                if (capture != null)

                {

                    capture.Dispose();

                    capture = null;

                }

                MessageBox.Show(e.ToString());

            }

        }

 

        private void SetTimer()

        {

            timer = new DispatcherTimer();

            timer.Interval = new TimeSpan(0, 0, 0, 0, 33);

            timer.Tick += new EventHandler(TimerClock_Tick);

        }

 

        void TimerClock_Tick(object sender, EventArgs e)

        {

            // 카메라의 프레임을 비트맵으로 변환

            using (src = capture.QueryFrame())

            {

                WriteableBitmapConverter.ToWriteableBitmap(src, writeBitmap);

            }

        }

 

        private void btnStart_Click(object sender, RoutedEventArgs e)

        {

            if (capture != null && !timer.IsEnabled)

            {

                timer.IsEnabled = true;

                timer.Start();

            }

        }

 

        private void btnStop_Click(object sender, RoutedEventArgs e)

        {

            if (capture != null)

            {

                timer.IsEnabled = false;

                timer.Stop();

            }

        }

 

        private void camList_SelectionChanged(object sender,   

              System.Windows.Controls.SelectionChangedEventArgs e)

        {

            initCamera(camList.SelectedIndex);

        }

    }

 

[ 결과 화면 ]

노트북이라 화질이 정말 안 좋군요. -_- ;;

 

필요한 사항들은 다음과 같습니다. (저는 모두 1.1 버전을 사용하였습니다. )

 

- OpenCV : http://sourceforge.net/projects/opencvlibrary/files/ 

- OpenCvShrap : http://cafe.naver.com/opencvsharp/481

 

캡쳐보드를 사용하는 경우 화면이 멈추는 현상이 발생할 수 있습니다.

    그럴 땐 캡쳐보드의 Deinterlace 속성을 변경시키거나 다른 옵션들을 보셔야 합니다.

'Window > WPF' 카테고리의 다른 글

[ WPF ] BackgroundWorker  (2) 2010.07.11
[ WPF ] 윈도우 이벤트  (4) 2010.07.11
[ WPF ] 이미지 그림판  (2) 2010.05.08
[ WPF ] UI 쓰레드 변경하기  (0) 2010.05.04
[ WPF ] WPF in Flash  (0) 2010.04.29
Posted by 열ㅇl
Window/WPF2010. 5. 8. 18:13

이미지를 불러와 간단한 꾸미기를 하고 저장하는 예제에 대해 포스팅하겠습니다.

예전 해당 영역을 이미지로 저장하는 포스팅의 내용을 약간 수정한 내용입니다.

 

간략적으로,

InkCanvas를 사용해 그림을 그리고 DrawingVisualDrawingContext를 통해

RenderTargetBitmap으로 변환 후 이를 BitmapEncoder를 사용해 해당 포맷에 맞게 저장합니다.

 

InkCanvas를 이미지로 변환 후 저장하기 때문에

꾸미기 용도에 맞게 자식 객체로 여러가지를 포함시킨 후 저장하셔도 되겠죠.^^

 

이제, 소스를 통해 하나씩 알아보겠습니다.

 

1. 이미지를 InkCanvas의 Background로 지정합니다.

// 이미지 불러오기

private void btn_Open(object sender, RoutedEventArgs e)

{

    OpenFileDialog openDialog = new OpenFileDialog();

 

    if (openDialog.ShowDialog() == true)

    {

        if (File.Exists(openDialog.FileName))

        {

            BitmapImage bitmapImage = new BitmapImage(new Uri(openDialog.FileName,

                UriKind.RelativeOrAbsolute));

 

            // InkCanvas의 배경으로 지정

            inkCanvas.Background = new ImageBrush(bitmapImage);

        }

    }

}

 

2. 해당 객체(InkCanvas)를 비트맵으로 변환합니다.

 // 해당 객체를 이미지로 변환

private static RenderTargetBitmap ConverterBitmapImage(FrameworkElement element)

{

    DrawingVisual drawingVisual = new DrawingVisual();

    DrawingContext drawingContext = drawingVisual.RenderOpen();

 

    // 해당 객체의 그래픽요소로 사각형의 그림을 그립니다.

    drawingContext.DrawRectangle(new VisualBrush(element), null,

        new Rect(new Point(0, 0), new Point(element.ActualWidth, element.ActualHeight)));

 

    drawingContext.Close();

 

    // 비트맵으로 변환합니다.

    RenderTargetBitmap target =

        new RenderTargetBitmap((int)element.ActualWidth, (int)element.ActualHeight,

        96, 96, System.Windows.Media.PixelFormats.Pbgra32);

 

    target.Render(drawingVisual);

    return target;

}

 

3. 변환된 이미지를 해당 포맷에 맞게 저장합니다.

 // 해당 이미지 저장

private static void ImageSave(BitmapSource source)

{

    SaveFileDialog saveDialog = new SaveFileDialog();

 

    // 이미지 포맷들

    saveDialog.Filter = "PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp";

    saveDialog.AddExtension = true;

 

    if (saveDialog.ShowDialog() == true)

    {

        BitmapEncoder encoder =  null;

        // 파일 생성

        FileStream stream = new FileStream(saveDialog.FileName, FileMode.Create, FileAccess.Write);

 

        // 파일 포맷

        string upper = saveDialog.SafeFileName.ToUpper();

        char[] format = upper.ToCharArray(saveDialog.SafeFileName.Length - 3, 3);

        upper = new string(format);

 

        // 해당 포맷에 맞게 인코더 생성

        switch (upper.ToString())

        {

            case "PNG":

                encoder = new PngBitmapEncoder();

                break;

 

            case "JPG":

                encoder = new JpegBitmapEncoder();

                break;

 

            case "GIF":

                encoder = new GifBitmapEncoder();

                break;

 

            case "BMP":

                encoder = new BmpBitmapEncoder();

                break;

        }

        // 인코더 프레임에 이미지 추가

        encoder.Frames.Add(BitmapFrame.Create(source));

        // 파일에 저장

        encoder.Save(stream);

        stream.Close();

    }

}

 

 

결과 화면은 다음과 같습니다.

 

1. 이미지를 불러옵니다.

        

 

2. 간단히 꾸미기를 하고 저장합니다.

      

 

3. 저장된 이미지

 

'Window > WPF' 카테고리의 다른 글

[ WPF ] 윈도우 이벤트  (4) 2010.07.11
[ WPF ] OpenCV로 캠 화면 띄우기  (3) 2010.06.20
[ WPF ] UI 쓰레드 변경하기  (0) 2010.05.04
[ WPF ] WPF in Flash  (0) 2010.04.29
[ WPF ] 클래스 구조  (0) 2010.04.27
Posted by 열ㅇl
Window/WPF2010. 5. 4. 11:00

WPF에는  UI쓰레드와 비 UI 쓰레드로 구분되어 집니다.

UI 쓰레드는 UI 객체를 수정 및 변경할 수 있는 유일한 메인 쓰레드 입니다.

 

이와 반대로 사용자가 생성하는 쓰레드는 비 UI 쓰레드로

이 쓰레드 안에서 UI 객체를 수정 및 변경하게 되면 InvalidOperationException 발생하게 됩니다.

 

프로그래밍 도중 사용자가 생성한 쓰레드 내에서 UI 객체의 상태를 변경해야 할 때가 있는데요.

이때 사용하는 클래스가 Dispatcher 입니다.

 

간단한 사용법은 다음과 같습니다.

 

 this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate()

 {

     // 변경할 내용

 }

 );

'Window > WPF' 카테고리의 다른 글

[ WPF ] OpenCV로 캠 화면 띄우기  (3) 2010.06.20
[ WPF ] 이미지 그림판  (2) 2010.05.08
[ WPF ] WPF in Flash  (0) 2010.04.29
[ WPF ] 클래스 구조  (0) 2010.04.27
[ WPF ] Flash in WPF  (3) 2010.04.23
Posted by 열ㅇl
Window/WPF2010. 4. 29. 09:16

플래쉬 객체를 WPF에 포함시킨 후

플래쉬 객체 위에 WPF 객체를 포함시켜야 할 경우가 있습니다.

 

ElementHost를 사용하여 WPF 객체를 포함시킬 수가 있는데요.

 

이 경우 포함 시킨 객체가 보이지 않는 현상이 발생합니다.

이것은 윈폼에 컨트롤을 포함시키는 과정에서 처음 포함된 객체가 제일 앞에 있기 때문에

플래쉬 객체에 가려져 보이지 않는 것입니다.

 

간단하게 현재 포함된 객체를 플래쉬 객체보다 앞으로 나오게 하면 해결 할 수 있습니다.

 

다음 소스 예제는

윈폼의 BringToFront 함수를 사용하여 제일 앞으로 나오게 하였습니다.

 public void SetWpfControl(FrameworkElement control, int x, int y)

  {

     ElementHost host = new ElementHost();

     host.Width = (int)control.Width;

     host.Height = (int)control.Height;

 

     host.Child = (UIElement)control;

     host.Location = new System.Drawing.Point(x, y);

 

     flash.Controls.Add(host);

     host.BringToFront();

 }

 

실행화면과 같이 플래쉬 객체 위에 WPF 객체가 올려지는 것을 확인할 수 있습니다.

 

'Window > WPF' 카테고리의 다른 글

[ WPF ] 이미지 그림판  (2) 2010.05.08
[ WPF ] UI 쓰레드 변경하기  (0) 2010.05.04
[ WPF ] 클래스 구조  (0) 2010.04.27
[ WPF ] Flash in WPF  (3) 2010.04.23
[ WPF ] 캡쳐보드 카메라 사용하기  (0) 2010.04.22
Posted by 열ㅇl
Window/WPF2010. 4. 27. 10:26

'Window > WPF' 카테고리의 다른 글

[ WPF ] UI 쓰레드 변경하기  (0) 2010.05.04
[ WPF ] WPF in Flash  (0) 2010.04.29
[ WPF ] Flash in WPF  (3) 2010.04.23
[ WPF ] 캡쳐보드 카메라 사용하기  (0) 2010.04.22
[ WPF ] Using WPF in Winform  (0) 2010.03.12
Posted by 열ㅇl
Window/WPF2010. 4. 23. 16:16

WPF에서 Flash 컨트롤을 사용하는 간단한 예제에 대해 포스팅 하겠습니다.

 

1) WPF 응용 프로그램 생성.

 

2) 사용자 지정 컨트롤 라이브러리 프로젝트 추가.

 

3) Winform 사용자 정의 컨트롤 추가.

 

4) 디자인 창 도구상자에서 마우스 오른쪽 버튼을 눌러 항목 선택 클릭

 

5) COM 탭에 Shocwave Flash 선택

 

6) Shockwave Flash Object 삽입

 

7) 코드 내용


8) WPF 사용자 정의 컨트롤 추가

 

9) 코드 내용



10) 사용자 지정 컨트롤 라이브러리 프로젝트 빌드 후,

     응용 프로그램에서 dll 참조 추가

 

11) 코드 내용



12) 실행화면

 

'Window > WPF' 카테고리의 다른 글

[ WPF ] WPF in Flash  (0) 2010.04.29
[ WPF ] 클래스 구조  (0) 2010.04.27
[ WPF ] 캡쳐보드 카메라 사용하기  (0) 2010.04.22
[ WPF ] Using WPF in Winform  (0) 2010.03.12
[ WPF ] 옆으로 흐르는 TextBlock  (0) 2010.03.11
Posted by 열ㅇl