Microsoft Expression Blend 2 툴을 이용하여 XAML을 생성하였다;
그중 Image라는 컨트롤을 넣었는데 상황에 따라 그림파일을 동적으로 바꿔주고 싶었지만

방법을 몰라 고생하다가! 별것도 아닌걸 꽤나 오랜시간걸려서 찾은것같아;
이런문제로 고생하고 있을 다른 분들을 위한 포스팅!

<Image Height="80" HorizontalAlignment="Left" x:Name="itemImage" Width="80" Source="image.bmp"/>
이 XMAL 코드에서처럼  Source="image.bmp" 이런식으로 초기에는 간단하게 bmp 파일과 연결할수있다;

비하인드 코드에서 제어하기 위해서는

 private void ChageSource()
 {
    itemImage.Source = 
          new BitmapImage(new Uri(m_itemImageURL, UriKind.Relative));
 }
 

BitmapImage를 생성하고 해당하는 경로를 Uri로 넣어주면 간단하게 해결된다!!
사용을 위해 using System.Windows.Media.Imaging;  을 추가한다
여기서 Uri()생성자의 처음 인자는 "파일의 경로" 이고

두번째인자의 UrlKind.Relative (상대경로) ,UrlKind.Absolute (절대경로) ,UrlKind.RelativeOrAbsolute (둘다)
의미한다!


Posted by 맨날맑음
,

실버라이트의 Storyboard를 이용하면 간단하게 타이머를 만들수있다;

물론 System.Windows.Threading.DispatcherTimer 를 이용해도 같은 효과를 낼수있다!

매우 간단한 예제인지라 소스코드만 보면 금새 알수 있을것이다!


using System;
using System.Windows;
using System.Windows.Controls;
//실버라이트 스토리보드를 이용하기 위해 using!
using System.Windows.Media.Animation;

//실버라이트 스토리보드를 이용한 타이머 예제
namespace MyTimer
{
    public partial class Page : UserControl
    {
        Storyboard timer = new Storyboard();
        int cnt = 0;

        public Page()
        {
            InitializeComponent();
            //타이머 간격 설정;
            timer.Duration = new Duration(new TimeSpan(0, 0, 1));

            //x:Name 설정            
            timer.SetValue(NameProperty, "StoryboardTimer");

            //타이머 종료 이벤트 등록
            timer.Completed += new EventHandler(timer_Completed);

            //타이머 시작
            timer.Begin();
        }

        //타이머 종료 이벤트
        void timer_Completed(object sender, EventArgs e)
        {
            txtResult.Text = string.Format("{0} TimeSpan..", ++cnt);
            //다시한번 타이머를 호출한다!
            timer.Begin();
        }
    }
}
Posted by 맨날맑음
,

리스트박스를 이용하여 채팅 프로그램을 구현했지만
글이 길어지면 자동으로 스크롤 돼지 않아서 불편한 경험이있었다;

이번 포스팅에서는 간단하게 리스트박스를 자동으로 스크롤 하는 방법을 알아보려구 한다;

매우 간단하다!! 단 두줄;

 void IDT_TEXT_KeyDown(object sender, KeyEventArgs e)
        {
            //텍스트박스에 누른 키가 엔터일경우
            if(e.Key == Key.Enter)
            {
                if (IDT_TEXT.Text == "")
                {
                   return;
                }

                IDL_LIST.Items.Add(IDT_TEXT.Text);
                //리스트박스의 스크롤을 자동으로///////////////////////////
                IDL_LIST.UpdateLayout();
                IDL_LIST.ScrollIntoView(IDL_LIST.Items[IDL_LIST.Items.Count-1]);
                ///////////////////////////////////////////////////////////
                IDT_TEXT.Text = "";
            }   
        }   
  
여기서 주목할 부분은 이 두줄이다
IDL_LIST.UpdateLayout();
IDL_LIST.ScrollIntoView(IDL_LIST.Items[IDL_LIST.Items.Count-1]);


리스트박스를 업데이트하고; 스크롤을 가장 최근의 글을 보게 하면
자동으로 스크롤되느느 리스트박스를 볼수있다!!!
모두들 메리크리스마스!!ㅋㅋㅋ
Posted by 맨날맑음
,

mp3

2 개의 파일을 합치고자 할때 콘솔 명령어로 간단하세 합칠수 있다;

실행 -> cmd
 copy    /b   media1.mp3 + media2.mp3    result.mp3 

동영상

mp3와 동일하지만, 
 copy /b  media1.avi + media2.avi  result.avi
 /b: 파일을 바이너리로 취급

합친 후, 인덱스 재생성을 해야한다!(AVI 포맷일경우)
mencoder -ovc copy -oac copy  result.avi    -o  indexingResult.avi


mencoder를 이용하여 index만 빠르게 처리한다.

-ovc copy           Option Video Codec  copy (그대로 사용)
-oac copy           Option Audio Codec  copy (그대로 사용)
-o                      OUT FILE NAME


주의할 점은, mencoder에서 처리할 수 있는 codec으로 된 파일만 처리가능한 것이다.

다수의 영상 & mp3

다수의 영상이나 mp3의 경우
순차로 이름지어진 파일들을 하나의 폴더에 모은뒤, 아래처럼 하면된다.
copy /b  *  newfilename

* 마찬가지로 동영상일경우 인덱스 재생성

Posted by 맨날맑음
,

ffmpeg   -i   동영상.avi -ss  600  -t  120  -vcodec copy -acodec copy  clip.avi

-ss   10분(600초)부터 부분파일을 시작
-t      2분간(120초) 해당하는 부분 선택
-vcodec copy         비디오codec을 원본과 동일하게 지정(변환없이 원본그대로 사용)
-acodec copy         오디오codec ........  ...

clip.avi   출력파일명


위에 -t  대신에 -fs를 대체하면 파일용량 상한선을 지정할 수 있다..

-> 시작옵션만 지정하면, 시작부터 파일끝까지..
-> 끝옵션만 지정하면, 시작부터 제한된 시간까지..

-------------------------------------------------------------------------------------

mp3를 비롯한 다른 오디오 파일을 잘라내는 방법 또한 위의 내용과 같다.

10분짜리 mp3파일을 반절로 나눌때
ffmpeg -i FILE.mp3  -acodec copy  -t 300    전반부.mp3
-t 300 (초)       5분까지라는 뜻으로 시작점이 지정되지 않았기 때문에 처음부터 5분까지이다.

ffmpeg -i FILE.mp3  -acodec copy  -ss 300    후반부.mp3
-ss 300 (초)      5분부터라는 뜻으로, 끝부분이 지정되지 않았기 때문에 5분부터 끝까지이다.


그 외에도 다른 오디오분할도 위와 같이 하면 된다.
단순한 분할이 목적이라면, 오디오편집프로그램보다 이것이 더 빠르다.  

만약 안된다면, 해당프로그램버젼에서 지원이 안되는 codec이기 때문이다.
지원되는 형식과, codec 종류를 알고 싶을땐... 아래 명령을 사용
ffmpeg -formats

compile할대의 옵션의 차이에 의해서 codec지원이 되고, 안된다. 
Posted by 맨날맑음
,