본문 바로가기

C# WPF

Analog Clock in C# WPF using Rotation(아날로그 시계) C# WPF로 다음과 같은 Analog Clock 을 RotateTransform 을 이용하여 구현한다. RotateTransform을 이용하면 시침, 분침, 초침을 만들어두고, 1초에 한번씩 현재 시간에 따라 시침, 분침, 초침의 각도를 계산한 후, 시계의 중심좌표를 중심으로 각 바늘의 각도만큼 회전시켜 줌으로써 시계를 만들 수 있다. 삼각함수를 써서 바늘의 좌표를 계산하여 그리는 것보다 간단하다. 눈금도 같은 방법으로 간단히 그릴 수 있다. 소스를 참조하시길... // XAML // CS using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.. 더보기
C# WPF 계산기 WPF로 설계한 일반계산기... 소스 (xaml) MC MR MS M+ M- ← CE C ± √ 7 8 9 / % 4 5 6 * 1/x 1 2 3 - = 0 . + Copyright 2013 BeeEye Dmu 소스(cs) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Window.. 더보기
Visual Studio 2012와 2010의 차이점 Visual Studio 2012의 새로운 기능 http://www.microsoft.com/visualstudio/kor/whats-new#story-whats-new Visual Studio 2012을 당장 사용해야 되는 이유 - Tistory http://netframework.tistory.com/entry/Visual-Studio-2012%EC%9D%84-%EB%8B%B9%EC%9E%A5-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC%EC%A7%80-%EB%90%98%EB%8A%94-%EC%9D%B4%EC%9C%A0 Visual Studio 2012 http://msdn.microsoft.com/library/dd831853.aspx 더보기
Delegate Delegate를 테스트하기 위해 다음과 같은 간단한 프로그램을 만들어보았다. 6번째 줄에서 delegate 함수 void MyDelegate(int a, int b) 를 선언하였다. int 2개를 받아들이고 return 값은 없는 형태의 함수를 대리할 수 있다. 10번째 줄에서 MyDelegate 함수로 myFuncs 을 선언했다. myFuncs 는 함수의 포인터와 같은 동작을 할 수 있다. 26번째 줄부터 2개의 int를 입력받고 return 값이 없는 4개의 함수를 정의하였다. 그리고 Main() 함수의 14번째 줄부터 4줄에서 myFuncs += Add; 와 같이 함수를 추가하였다. 19번째 줄의 myFuncs(5, 3)에 의해 Delegate에 추가된 4개의 함수가 모두 수행된다. 23번쨰 줄에.. 더보기
Database 연결, ConnectionStrings.com DB 연결할 때, 필요한 ConnectionString 을 찾아주는 사이트입니다. http://www.connectionstrings.com/ 예를 들어 Access 2007 또는 그 이후 버전의 Access 데이테베이스를 연결할 때는, Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccess2007file.accdb; Persist Security Info=False; 이렇게 쓰면 됩니다. string connStr = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=../../../DBFiles/ZIP.accdb; Persist Security Info=False"; conn.ConnectionStri.. 더보기
StackPanel of StackPanels StackPanel 안에 다른 StackPanel이 포함될 수 있다. 다음 그림과 같이 30개의 버튼이 있는 프로그램을 만들어보자. 이 프로그램은 10개씩의 버튼을 자식으로 갖고 있는 StackPanel 3개를 포함하는 StackPanel로 만들수 있을 것이다. 즉, 다음 그림과 같이 colStack 3개를 자식으로 갖는 mainStack을 만들고, 각각의 colStack에는 10개의 Button을 자식으로 포함시키면 된다. mainStack의 Orientation은 Horizontal, colStack의 Orientation은 default인 Vertical 이 된다. 소스코드는 다음과 같다. Button에 이름을 부여하기 위해서 39번째 줄 btn.Name = "Button" + (10*i+j).To.. 더보기
Grid Panel 두번째 패널 콘트롤로 Grid 콘트롤을 알아보자. Grid 콘트롤은 격자형태로 칸을 나누어 각각의 칸에 하나씩의 콘트롤을 배치할 수 있게 한다. 우선 다음과 같이 아이디와 패스워드를 체크할 수 있는 윈도우를 만들어보자. (0,0) (0,1) (1,0) (1,1) (2,0) (2,1) 이 프로그램은 2개의 Label, 2개의 TextBox, 1개의 버튼으로 구성된다. 5개의 콘트롤들은 그림과 같은 Grid에 배치된다. Grid의 각각의 공간은 (row, column)으로 번호가 주어진다. 먼저, 프로그램을 gridTest 클래스로 구현해보자. Grid콘트롤 grid를 생성하고, 3행 2열의 공간을 만들어 리턴해주는 함수를 CreateGrid()라고 하면, 이는 다음과 같다. // 그리드의 행과 열을 지정하.. 더보기
패널 콘트롤 Content 에는 하나의 콘트롤 밖에 붙일 수 없다. 만일 다음과 같이 여러개의 콘트롤 들이 포함된 윈도우를 만들기 위해서는 패널(Panel) 콘트롤을 사용한다. 패널은 자신은 보여지지 않지만, 여러개의 콘트롤들을 자식으로 포함할 수 있다. 패널에는 StackPanel, DockPanel, Grid 가 있다. StackPanel StackPanel을 이용하면 콘트롤들을 한 방향으로 차곡차곡 쌓을 수 있다. 정렬방향은 Default로 수직방향이며, Orientation을 Horizontal로 바꾸어주면 수평방향으로 위치시킬 수 있다. 우선 다섯개의 버튼을 수직으로 배치해보자. // 생성자 public controlTest() { Title = "Control Test"; Width = 400; Heigh.. 더보기
콘트롤의 처리 윈도우 프로그램은 GUI(Graphical User Interface) 프로그램이다. GUI 객체는 "사용자와 프로그램 사이에 정보교환을 위한 시각적 요소를 갖고 있는 객체"라고 할 수 있으며, 우리가 윈도우 프로그램에서 익히 보아왔던 Label, TextBox, Button 등을 얘기한다. 이렇게 시각적 요소를 가지고 있는 객체를 콘트롤(Control)이라 부른다. 콘트롤을 사용하려면 using System.Windows.Controls; 을 삽입해야 한다. 콘트롤은 많은 프로퍼티(속성)을 갖고 있는데, 프로퍼티는 콘트롤 마다 서로 다르다. 이중 Content 라는 프로퍼티는 많은 콘트롤들이 공통으로 갖고 있는데 말 그대로 내용물이라는 뜻이다. A와 B가 콘트롤이라고 할 때, A.Content = B;.. 더보기
Event Handler 2 Event Handler 예제에서 마우스 버튼이 눌렸을 때의 좌표를 출력했었는데, 이번에는 마우스버튼이 눌렸을 때와 눌렀다가 놓았을 때의 이벤트를 같이 처리해보자. 눌렸을 때의 이벤트는 MouseDown, 놓았을 때의 이벤트는 MouseUp 이다. 두 이벤트를 처리하는 이벤트핸들러 함수는 하나로 처리하기로 하자. 이 함수의 이름은 myWindow_MouseHandler로 하겠다. BeeEye 드무 더보기