일반적으로 트랜스폼은 블랜드에서 생성해서 쓰기 때문에 동적으로 생성할일이 많지는 않습니다. 하지만 동적으로 생성한 컨트롤에 트랜스폼을 주고 싶으면 동적으로 생성해야 하죠. 동적으로 트랜스폼을 주려면 2가지 방법이 있습니다. 한개만 지정하는 방법과 그룹으로 지정하는 방법이 있죠. 1개만 지정하는 방법은 컴포짓트랜스폼(CompositeTransform)을 이용합니다. 이 컴포짓트랜스폼은 4.0이후버전에서 사용하는데....이전 버전에서 사용가능한지 모르겠군요. 어찌됬건 컴포짓트랜스폼은 좌표이외에도 대부분의 트랜스폼 옵션을 사용할수 있기때문에 거의 컴포짓트랜스폼만 생성하면 별문제 없이 애니메이션 생성이 가능하죠. 이 포스팅에선 4.0이후 버전에서 1개만 지정하여 사용하는 방법을 알려드리겠습니다. 1개만 지정한개..
WPF나 실버라이트를 하면서 가장 아리송한 부분이 색지정입니다. 특히 배경색 말이죠. 보통 윈폼에서는 칼라나 RGB열거형을 쓰는데 WPF나 실버라이트는 브러쉬라는 것을 사용합니다. 브러쉬는 사용하는건 별문제가 안되는데 이녀석도 객체처럼 초기화를 하려고 하면 초기화가 안됩니다 ㅡ,.ㅡ; 헛 에러가-_-;; 비주얼 스트디오의 친절함에 익숙한 닷넷 개발자들이라면 적지않게 당황할수 밖에 없는 상황이죠 ㅎㅎㅎ 어지됬건 각 브러쉬에 맞는 브러쉬로 초기화를 해야 먹힙니다, 위와 같은 백그라운드의 경우 SolidColorBrush를 이용해야 합니다. LayoutRoot.Background = new SolidColorBrush(Colors.Red); LayoutRoot.Background = new SolidColor..
애니메이션의 반복 옵션을 주려면 스토리보드에 'RepeatBehavior'속성을 주면 됩니다. Storyboard m_sbReturn = new Storyboard(); this.m_sbReturn.RepeatBehavior = RepeatBehavior.Forever; 참 쉽조잉? 이렇게 옵션을 'RepeatBehavior.Forever'으로 주면 무한 반복 합니다. 멈추려면 '.Stop()'을 호출하면 됩니다.
가속 감속 넣기는 참 쉽습니다. 문제는 애니메이션을 구성할때 어떻게 구성했냐에 따라 다르죠. 이전글 - [WPF/Silverlight] 오브젝트 애니메이션 이전글을과 같이 'DoubleAnimationUsingKeyFrames'로 구현한경우 키프레임 구성에 사용한 'EasingDoubleKeyFrame'을 사용하여 가속/감속을 지정하여야 합니다. 가속/감속을 지정할때 사용하는 속성은 'EasingFunction'입니다. 이게 있어야 지정이 가능하죠. //DoubleAnimationUsingKeyFrames kf = new EasingDoubleKeyFrame(); kf.EasingFunction = new CircleEase() { EasingMode = System.Windows.Media.Animat..
텍스트 박스, 버튼, 유저컨트롤 등이 뒤섞여있는데 모두 같은 애니메이션을 주려면? 이럴때 보통 오브젝트(object)로 선언하여 관리하면 되지만 오브젝트 형태는 애니메이션을 줄수가 없습니다. 오브젝트는 스토리 보드에 추가 할수 없다는 에러입니다. 이럴 때는 오브젝트를 'FrameworkElement' 형태로 바꿔주면 됩니다. 에러가 사라 젔습니다. 그렇기 때문에 애니메이션을 통으로 관리 할때는 'FrameworkElement'로 해야 하는 것이지요. 초간단 천체 소스
그냥은 안되고 외부 라이브러리를 사용해야 합니다. FluxJpeg라는 라이브러리인데 비트맵을 JPG로 변환할때 사용합니다. 클래스로 사용하는 전체 코드이니 귀찬으면 그냥 복사해서 써도 됩니다. using System.Windows.Media.Imaging; using System.IO; public class claExportImg { Canvas m_layoutScreen = null; public claExportImg() { } public void OnCapture(Canvas layoutScreen) { //사용할 레이아웃 지정 this.m_layoutScreen = layoutScreen; WriteableBitmap wb = new WriteableBitmap(this.m_layoutScre..
다른글에서 닷넷은 다중상속이 안되니 조부모 상속을 이용하라고 하였습니다. ( 참고 : [.Net] 다중상속이 안된다면 할아버지 상속이다!! - 여러개의 베이스를 상속받기 ) 그런데 WPF나 실버라이트의 경우 컨트롤의 조부모 상속을 해보면 에러가 납니다. 'HumanLevel.TabHead.ucTest'의 partial 선언에는 서로 다른 기본 클래스를 지정할 수 없습니다. 완전 수수께끼 같은 오류메시지 입니다-_-; 이 오류는 .xmal과 .cs파일간에 같은 다른 상속을 받기 때문에 발생하는 오류입니다. 위 자물파일을 확인해보면 컨트롤이 UserControl로 선언 되있음을 알수 있습니다. 이 부분이 베이스랑 일치해야 합니다. 그러면 UserControl를 교체해봅시다. 1. The tag 'baseTa..
이런 간단한 것들은 따로 모아서 한 포스트로 밀어 넣을까 했는데... 그래도 자주 쓰는 것이니 따로 따로 넣는게 좋은듯 하여 가볍게 즐기는 실버라이트 타임~ 실버라이트에서 새창을 띄워 웹페이지를 열수 있는 방법은 몇가지가 있습니다. 그중 가볍게 쓸수 있는 것이 Navigate를 이용하는 방법이죠. 먼저 유징을 해주시고 using System.Windows.Browser; 아래와 같이 사용합니다. HtmlPage.Window.Navigate(new Uri("http://Blog.DangGun.net"), "_blank"); 이렇게 하면 새창이 띄워 집니다. 이렇게 쉽게 새창을 띄울수 있습니다.
보통은 이미 다른 자식이라고 뜨는데 어떤경우에는 값이 범위를 벗어났다고 뜹니다. 차일드로 지정한녀석을 다시 지정하려고 할때 나는 오류인데 말이죠-_-; 보통 이렇게 뜨는게 맞습니다. 그런데 이렇게 뜨죠. 원인은 "이미 다른자식입니다"와 같습니다. 그렇기 때문에 이미 다른곳에 소속인 객체를 해당 소속에서 지워 주면됩니다. //컨트롤 배열 생성 this.btnTest = new Button[10]; //컨트롤 초기화 for (int i = 0; i < 10; ++i) { this.btnTest[i] = new Button(); } this.btnTemp = this.btnTest[0]; this.gridTemp1.Children.Add(this.btnTemp); this.gridTemp2.Children.A..
1/4. 한 프로젝트에서 웹서비스 만들기 2/4. DB연결 하기 3/4. 리스트 주고 받고 - 서버 탐색기와 린큐를 이용한 방법 4/4. 리스트 주고 받고 - 클래스를 이용한 방법 클래스방식으로 가저오면 데이터를 필요한것만 보낼수 있습니다. 문제는 이방법을 사용하려면 변환작업을 해야 한다는 단점이 있죠. DB는 린큐때와 다르게 일반적인 방법을 사용하여야 합니다. 2/4에서 연결한 방법을 사용합니다. 2/4의 내용을 숙지했다고 생각하고 포스트를 씁니다. 0.저장 프로시저 만들기저장프로시저의 이름은 ListGet로 하고 아래와 같이 만들어 줍니다. Select Top 10 strData1, strData2, strData3 From tb_WebServiceTest 1.넘겨줄 클래스 생성클래스는 WFC가있는 ..