레이블이 #WPF컨텐트인 게시물을 표시합니다. 모든 게시물 표시
레이블이 #WPF컨텐트인 게시물을 표시합니다. 모든 게시물 표시

2019년 1월 26일 토요일

WPF 컨텐트(Content),폰트패밀리(FontFamily,), 폰트사이즈(FontSize)

WPF 컨텐트(Content),폰트패밀리(FontFamily,), 폰트사이즈(FontSize)
n WPF에서 컨트롤(Control)은 이전 윈도우 프로그래밍보다 조금은 한정적으로 사용된다. 윈폼의 경우 화면상에 보이는 모든 것들을 컨트롤로 지정했지만 WPF에서는 사용자와 상호작용하는 엘리먼트로 제한한다.
n Window 클래스에는 100개 이상의 public 프로퍼티가 있지만 가장 중요한 프로퍼티는 Content이다. 클라이언트 영역에 붙이고 싶은 객체를 Content 프로퍼티에 저장하는 것이다.
n Window의 Content 프로퍼티에는 문자열, 비트맵, 그림, 버튼, 스크롤바 등을 지정할 수 있는데 WPF에서는 50개 이상의 컨트롤을 이용할 수 있으며 하나의 Content 프로퍼티에는 하나의 객체만 할당할 수 있다.(Content 프로퍼티는 object 타입이다.)
n Window 클래스는 ContentControl로부터 Content 프로퍼티를 상속받는데 ContentControl 클래스는 Content 프로퍼티를 위해 존재하며 다양한 Content와 관련된 프로퍼티와 메소드를 가진다.
Window는 반드시 트리의 루트로 지정되야 하며 다른 Window의 자식 엘리먼트가 되어서는 안된다.
Inheritance Hierarchy
Namespace: System.Windows
Assembly: PresentationFramework (in PresentationFramework.dll)
      System.Windows.Media.Visual
        System.Windows.UIElement
          System.Windows.FrameworkElement
            System.Windows.Controls.Control
              System.Windows.Controls.ContentControl
                System.Windows.Window
                  System.Windows.Controls.Ribbon.RibbonWindow
                  System.Windows.Navigation.NavigationWindow
n UIElement를 유일하게 상속받는 클래스는 FrameworkElement이고 WPF에서 살펴볼 모든 엘리먼트는 FrameworkElement를 상속 받는다. 이론상으로 UIElement는 사용자 인터페이스 이벤트와 화면에 표시하는데 필요한 구조를 제공한다.
n 아래는 Window의 Content 프로퍼티에 문자열을 대입하는 예문이다.
class MainWindow : Window {
public MainWindow() {
InitializeComponent();
Title = "Content Test 1";
Content = "Content 예제 1";//글씨가 윈도우보다크면 잘리며 \r, \n사용가능
}
n
클라이언트 영역에 출력되는 텍스트의 폰트를 조절해 보자.
FontFamily = new System.Windows.Media.FontFamily("Comic Sans MS");
FontSize = 25;
WPF에는 Font 클래스가 없으며 FontFamily를 사용한다. 폰트 패밀리는 타입 패밀리라고 하며 관련된 서체의 모임이다. 윈도우에는 굴림, 돋움, 궁서, Courier New, Times New Roman, Arial,,,, Comic Sans MS등의 폰트 패밀리가 있다. 타입 스페이스(Type Space)는 페이스 이름이라고 하는데 폰트 패밀리와 이를 이용한 변화를 조합한 개념으로 Times New Roman Bold, Times New Roman Italic, Times New Roman Bold Italic 등을 예로 들수 있다.
폰트의 크기는 알파벳에서 글씨의 높이를 지정하는 em size(em은 대문자 M의 크기를 뜻하며 웹문서에서 사용되는 단위)를 이용하는데 포인트(Point)라는 단위로 표시한다. 1포인트는 0.01384 인치지만 컴퓨터에서는 1/72인치로 지정한다. 그러므로 36포인트의 em size는 1/2인치가 된다.
WPF에서는 원하는 em size를 FontSize에 지정하며 이때 사용되는 숫자는 포인트가 아니고 WPF에서 늘 사용하던 1/96인치의 장치 독립적 단위다. 결국 FontSize에 48을 대입하면 1/2인치 즉 36포인트가 되는 것이다.
픽셀은 컴퓨터 등에서 사용되는 고정된 크기의 단위로 1 픽셀은 컴퓨터 화면에서
점 하나와 같다. 포인트(Point)는 주로 인쇄매체에서 사용되는 고정된 크기 단위이다.
1 pt = (96/72) px
FrameworkElement를 상속받은 모든 개체는 Window는 Width, Height 속성을 가지 는 데 이때 사용되는 값은 단순한 픽셀이 아닌 장치 독립적 단위인 1/96 픽셀 이고 이것은 현재 모니터의 DPI(Dots per Inch)을 기준으로 픽셀을 설정하는 값이다. 1인치를 96등분 했을 때 하나를 픽셀(Pixel) 이라고 한다.
현재 모니터의 DPI가 96일 경우 Width=288, Height=192 라고 했을 때 이 값은 픽셀단위와 일치 하지만 DPI가 120이라면 Width Pixel은 288 * (1/96) * 120 = 360 로 픽셀 값이 정해진다. 픽셀값은 증가 되었지만 실제 크기는 변동없이 같다. 이 처럼 WPF는 장치독립적인 픽셀 값 설정을 통해 DPI 값의 변경에 따라 모니터의 크기와 상관없이 실제 개체의 크기는 변경되지 않도록 설정이 가능한 것이다.
FontSize의 기본값은 11, 즉 8.25 포인트이다. 대략 4.3을 곱하면 포인트로 환산된다.
n 아래 예문을 보자
FontFamily = new System.Windows.Media.FontFamily("Comic Sans MS");
FontSize = 32;
FontStyle = FontStyles.Italic;
FontWeight = FontWeights.Bold;
24 포인트 크기의 이탤릭체, 진하게 표시한다.
n 다음 예문을 보자.
Title = "Content Test 1";
Content = "Content 예제 1";
FontFamily ff = new System.Windows.Media.FontFamily("Comic Sans MS");
FontSize = 25;
FontStyle = FontStyles.Italic;
FontWeight = FontWeights.Bold;
Brush b = new LinearGradientBrush(Colors.Red, Colors.Black, new Point(0, 0), new Point(1, 1));
Background = b;
Foreground = b;
Foreground 와 Background가 같아서 안 보일 것 같지만 그렇지 않다. 알아서 조정한다.
n 다음과 같이 창의 크기를 Content 크기로 조정할 수 있다.
// 콘텐츠 크기에 맞게 창의 크기를 자동으로 조정할지 여부
// Automatically resize height and width relative to content
SizeToContent = SizeToContent.WidthAndHeight;
// Automatically resize height relative to content
SizeToContent = SizeToContent.Height;
// Automatically resize width relative to content
SizeToContent = SizeToContent.Width;
// Manually alter window height and width
SizeToContent = SizeToContent.Manual;
SizeToContent에는 열거형 멤버를 대입하는데 기본값인 Manual, Width, Height, WidthAndHeight등이 있다.
n ResizeMode는 다음과 같이 설정한다. (Resizing을 막음, 최대화 최소화 버튼 자체가 없음)
ResizeMode = ResizeMode.NoResize;
ResizeMode에는 CanMinimize(최대화 버튼은 비활성화, 창크기 조절불가), CanResize(최대화, 최소화 가능, 창크기 조절가능) 등이 있다.
n 창 안쪽에 경계선을 지정하는 예문
Title = "Content Test 1";
Content = "Content 예제 1";
FontFamily = new System.Windows.Media.FontFamily("Comic Sans MS");
FontSize = 25;
FontStyle = FontStyles.Italic;
FontWeight = FontWeights.Bold;
Brush b = new LinearGradientBrush(Colors.Red, Colors.Black, new Point(0, 0), new Point(1, 1));
Background = b;
Foreground = b;
//SizeToContent = SizeToContent.WidthAndHeight;
ResizeMode = ResizeMode.NoResize;
BorderBrush = Brushes.SaddleBrown;
BorderThickness = new Thickness(25,50, 25, 50);

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...