본문 바로가기

C#,WPF

[WPF] UI요소를 내맘대로 - Dispatcher, Transform 목적은 WPF에서 XAML을 통해 만든 UI 구성요소(여기서는 이미지를 타겟) 를 내 마음대로 움직이는데 있다. 스토리보드와 트리거쪽을 하려다가 도통 이해가 안가서 일단 패스하고,,, 다음으로 최대한 가까운게 Dispatcher로 스레드 돌리면서 Canvas의 left와 top을 지속적으로 재조정하는 방법이다. 이는 바탕이되는 캔버스를 이동시키는 방법인데; 아무래도 컨트롤에 있어서 여러가지로 문제가 있는것 같다. 이를 위해 있는게 Transform Class 라나? 여기서 핵심은 UI 요소에 접근하여 threading 할 수 있는 DispatcherTimer 와 객체를 이동,변화 시키는등 2차원에 대한 변화 할 수 있는 Transform class 이다. 쉽게말해서 UI스레드돌리면서 변화 조금씩 시킴 =.. 더보기
[WPF] 마우스 드래그 소스 분석 현재 완전한 분석을 못하였음. 열이블로그(http://shine10ee.blog.me/)에서 소스를 구해서 Transform 및 마우스 이벤트 관련 공부를 한다. 전체적인 흐름부터,,, XAML 코드상으로는 별거없다. 이미지를 띄워주고, 몇개는 border로 감쌌다. 기본 속성외에 이벤트연결 전혀 없다. 주로 볼건.. 비하인드 코드. ^^;;; private TranslateTransform TranslateTrans = new TranslateTransform(); TranslateTransform 2-D x-y 좌표계에서 변환(이동)합니다. 속성들중 주로 쓰는것은. Inverse : 이 변환의 역함수가 있는 경우 가져온다. ->Transform 에 상속됨 X : X축을 따라 변환할 거리를 가져오거나 .. 더보기
[WPF] Animation 예제(회전) 도형을 회전시켜보도록 하겠다. XAML 코드로 만들어진 도형을 클릭이벤트를 받아 회전 메소드를 실행시킨다. Grid 내에 Rectangle(도형) 과 Button(버튼) 을 생성하였다. 클릭이벤트는 rotate 를 실행하도록 짜여져 있다. 네임스페이스 사용 using System; //TimeSpan 사용 using System.Text; using System.Windows; using System.Windows.Controls; // Image 컨트롤 사용 using System.Windows.Media; // Animation 사용 using System.Windows.Media.Animation; // Animation 사용 Mainwindow 클래스내에 메소드를 넣는다. private void .. 더보기
[C#.NET] Transform 와 마우스 이벤트 Transform 사용 위한 네임스페이스 추가 : using System.Windows.Media; Element 사용 위한 네임스페이스 추가 : using System.Windows; private TransformGroup TransGroup = new TransformGroup(); 먼저 TransFormGroup 은 Transform object 들로 구성된 Transfrom 을 나타낸다. private RotateTransform RotateTrans = new RotateTransform(); => 2D의 x-y 좌표계에서 지정한 점을 기준으로 걔체를 시계 방향으로 회전한다. private TranslateTransform TranslateTrans = new TranslateTransform.. 더보기
[C#.NET] 델리게이트(Delegate) 델리게이트는 메소드를 가르키는 참조형으로서 메소드의 번지를 저장하거나 다른 메소드의 인수로 메소드 자체를 전달하고 싶을때 사용한다. 이벤트와 스레드를 처리하는데 주로 사용된다. C/C++에서는 함수 포인터가 비슷한 기능을 한다. 하지만 델리게이트는 이보다 더 객체지향적이며 타입이 안정적이다. 여기서 타입이 안정적이다는말은 -> 델리게이트의 형태와 참조할 메소드의 형태가 항상 일치해야함을 뜻한다. MSDN 참고 : 메서드를 안전하게 캡슐화하는 형식으로, C 및 C++의 함수 포인터와 유사합니다. C의 함수 포인터와 달리 대리자는 개체 지향적이고 형식 안전성을 제공하며 보안상 안전합니다. 대리자의 형식은 대리자의 이름으로 정의됩니다. 대리자는 C++의 함수포인터와 유사하지만 형식 안전적입니다. 대리자를 통해.. 더보기
C# 기초다지기 간단정리(1/3) C# 기본기 정리(1/3) 원래 짧게 요점만 쓰려고했는데 생각보다 공부할게 많아 적다보니 1개의 포스트할걸 3개로 나누게 되었다............... 01 : 클래스 메소드(Class Method) 클래스는 (필드) + (메소드) 로 , 대부분의 인터페이스(서버와 클라이언트 사이의 약속과 통신)은 메소드를 사용한다. 형식의 멤버에 지정될 수 있는 접근 한정자 private : 동일클래스 내 접근만 허용 public : 클라이언트 내 접근 허용 protected : 동일 클래스,파생클래스 접근 internal : 동일한 어셈블리에서 접근 protected internal : 동일한 어셈블리와 다른 어셈블리 파생클래스 접근 형식에 지정될 수 있는 접근 한정자 internal : 동일한 어셈블리에서 사용.. 더보기
[WPF] Window의 크기에 따른 객체 크기 변화 Window 창의 크기를 변경시에 배치된 컨트롤 및 그래픽 등의 크기도 함께 변화할 경우 SizeChanged 라는 이벤트 로직을 간단히 구현하면 된다. (본 포스팅은 열이블로그(http://shine10ee.blog.me/10080415289) 블로그의 내용을 기반으로 하며, 공부하면서 추가적인 분석을 한 글이다.) ScaleTransform scale = new ScaleTransform(); 와 같은 변화 하는 scale 객체를 클래스 내에 선언하기위해서 using System.Windows.Media; 를 포함하도록 한다. 먼저 Window class 에 멤버 변수를 선언한다. double originWidth, originHeight; Window 생성자에 originHeight = this.H.. 더보기