using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics; // 2강에서 추가된 네임스페이스
using System.Windows.Forms; // 메세지 박스
using System.Drawing; // Color속성 사용
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D; // 라이브러리 두개 추가
namespace ddrawexercise
{
public partial class MDX : IDisposable // 관리되지 않는 리소스 해제
{
private Microsoft.DirectX.Direct3D.Font _font = null;
// 탑레벨 윈도우 : 모든 초기화가 OK면 true, 하나라도 실패하면 false를 리턴한다.
// false를 리턴하게되면 자동으로 종료된다.
public bool InitializeApplication(Form1 topLevFORM)
{
this._form = topLevFORM;
try
{
this.CreateDevice(topLevFORM);
FontDescription fd = new FontDescription();
fd.Height = 24;
fd.FaceName = "고딕";
this._font = new Microsoft.DirectX.Direct3D.Font(this._device, fd);
}
catch(DirectXException ex)
{
MessageBox.Show(ex.ToString(), "에러", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return true;
}
public void MainLoop() // 메인루프
{
//화면을 파란색으로 클리어, 클리어 하지 않으면 전에 출력된 내용이 남는다
this._device.Clear(ClearFlags.Target, Color.DarkBlue, 1.0f, 0);
// flags : 클리어 하는 내용 지정, color : 클리어 할 색, 나머지는 z버퍼와 스탠실버퍼 통상 1.0과 0
this._device.BeginScene();
// beginScene과 endScene사이에 그릴 내용을 코딩한다
this._font.DrawText(null, "Rectangle 구조체와 텍스트 포맷",
new Rectangle(100, 260, 500, 400),
DrawTextFormat.Left | DrawTextFormat.Top, Color.LightPink);
this._font.DrawText(null, "두줄출력도" + Environment.NewLine + "가능",
new Rectangle(400, 320, 500, 400),
DrawTextFormat.Left | DrawTextFormat.Top, Color.LightGreen);
this._device.EndScene();
this._device.Present(); // 실제 디바이스에 출력
}
public void Dispose() // 자원의 파기
{
if (this._device != null)
{
this._device.Dispose();
} // Direct 3D 디바이스의 자원 해제
}
}
}
시뻘건 부분이 바로 그것, 폰트부분이다!
여러가지 글자속성이 필요하다면 글자변수를 많이 만들면 된다!
this._font = new Microsoft.DirectX.Direct3D.Font(this._device, fd);
Direct3D.Font 구조체
this._device : 폰트가 적용될 디바이스 설정
fd : 폰트속성 사용
이탤릭이나 진하게 이런거 다돼
Environment.NewLine : 줄바꾸기야, \r\n 요게 줄바꾸기인데, 이걸쓰는걸 추천해
DrawTextFormat.Singleline : 이렇게 설정이 되어있으면 줄이 안바뀌어
this._font.DrawText(null, "두줄출력도" + Environment.NewLine + "가능",
new Rectangle(400, 320, 500, 400),
DrawTextFormat.Left | DrawTextFormat.Top, Color.LightGreen);
Direct3D.Font.DrawText 구조체
sprite : 스프라이트 클래스를 이용해서 그리기 효율을 올린다. 없으면 걍 null
text : 그리려는 문자열
rect : 그릴 범위
format : 서식설정, drawTextFormat 열거형의 편성을 지정한다.
color : 글씨색
'Graphics > DirectX' 카테고리의 다른 글
Direct X - 6. 좌표 변화 세가지 (월드, 뷰, 투영) (0) | 2014.06.01 |
---|---|
Direct X - 5. 정점버퍼를 이용한 삼각형 출력 (0) | 2014.06.01 |
Direct X - 4. 2차원 도형 출력 (0) | 2014.06.01 |
Direct X - 2. 초기화와 기본처리 (0) | 2014.06.01 |
Direct X - 1. 기본설정 (0) | 2014.06.01 |