oksujay1127의 등록된 링크

 oksujay1127로 등록된 티스토리 포스트 수는 50건입니다.

WPF 윈도우 커스터마이징 [내부링크]

WPF의 윈도우를 커스터마이징하는 방법에는 두가지 방법이 있음. 윈도우의 WindowStyle="None" 지정하여 상단 캡션바를 없앤 후 스타일을 적용하는 방법 스타일에서 WindowChrome속성을 지정하는방법 기본적으로..

11. Blending [내부링크]

Blending은 물체의 투명도(transparency)를 구현하기 위한 기술로 투명한 물체는 자신의 색상뿐 아니라 뒤에 있는 객체들의 색상도 포함하여 화면에 나타나게 됨. 물체의 투명정도는 색상의 4번째 요소인 알파(alp..

10. Depth Testing [내부링크]

Depth buffer는 color buffer와 같은 버퍼의 한 종류로, 각 fragment의 깊이값(z값)을 가지고 있음. Depth test가 실행되면, OpenGL은 depth buffer와 fragment의 깊이 값을 테스트하고, 테스트를 통과하면 depth..

13. Anti-Aliasing [내부링크]

화면에 모델을 렌더링 시 들쭉날쭉한(jagged) 모서리를 볼 수 있음. 이러한 모서리는 rasterizer가 정점 데이터를 화면의 fragment로 변환하는 과정에서 나타나게 됨. 큐브를 자세히보면 모서리를 구성하는 픽셀의..

TabControl의 Header 위치 조정하는 법 [내부링크]

기본뷰 <TabControl> <TabItem Header="TabItem"> <Grid Background="#FFE5E5E5"/> </TabItem> <TabItem Header="TabItem"> <Grid Background="#FFE5E5E5"/> </TabItem> </TabControl> Tab header 위치 변경 <Ta..

같은 네임스페이스.클래스명 구분하기(extern alias) [내부링크]

프로젝트 Lib1, Lib2(같은 네임스페이스.클래스 존재) 프로젝트 Lib1, Lib2에 같은 네임스페이스, 클래스명을 가지는 Lib.Class1가 존재함. 외부 프로젝트에서 Lib1, Lib2를 동시에 참조하는 경우 Lib.Class1을 구..

LoaderLock 문제 임시 해결방법 [내부링크]

다음과 같은 LoaderLock에러가 발생함. 임시 해결방편으로 예외설정에서 LoaderLock을 제외하면 됨. 디버그 → 창 → 예외설정으로 이동한 후 LocderLock검색하여 체크해제하면 됨.

internal class를 단위 테스트 하는 방법 [내부링크]

internal class는 해당 어셈블리 내부에서만 사용할 수 있고 외부 어셈블리에서는 사용할 수 없음. 따라서 단위 테스트 프로젝트에서 internal class를 테스트 할 수 없는데 다음과 같은 방법으로 해결할 수 있음...

임의의 축 회전 행렬 유도 [내부링크]

임의의 축 회전 공식 유도 방법과 행렬식으로 만들기 위해 필요한 벡터의 투영, 외적의 행렬 표현식은 다음과 같음. ㆍ임의의 축 회전공식 유도 ㆍ벡터의 투영, 외적 행렬식

DataGridColumn의 Visibility속성 바인딩하는 방법 [내부링크]

초기 구현 First, Second Column을 가지는 DataGrid에서 First Column을 Visibility속성을 바인딩하여 숨기기 DataGridColumn의 Visibility를 MainViewModel의 bool타입인 IsFirstColumnVisible속성과 바인딩 <Da..

선형(Linear)의 정의 [내부링크]

참고 https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95%EC%84%B1

WPF 프로퍼티(의존 프로퍼티, 첨부 프로퍼티) [내부링크]

의존 프로퍼티(dependency property) WPF에 새롭게 도입된 개념으로 데이터 바인딩, 애니메이션 등에 사용되며 기존의 프로퍼티에 변경통보(Change notification), 프로퍼티 값 상속(Property value inheritance),..

WPF 기초 [내부링크]

XAML 선언형 프로그래밍 언어 네임스페이스, 데이터 타입(클래스), 프로퍼티, 이벤트 등은 XML의 네임스페이스, 엘리먼트, 어트리뷰트와 서로 매핑됨. XAML의 오브젝트 엘리먼트(object element) 선언 → 기본 생..

OpenGL의 내장함수(GetDouble,GetInt,ClipPlane...)가 제대로 동작하지 않는 경우 [내부링크]

현재 뷰에적용된 모델뷰, 투영, 뷰포트 매트릭스를 가져오기 위해서 GL.GetDouble, GL.GetInt 등의 함수를 사용하지만 이 함수들은 GL.MatrixMode로 매트릭스를 지정한 경우에만 해당하는 매트릭스 값을 제대로 가..

STL File(stereolithography) 정의 및 읽기 [내부링크]

정의 STL파일은 3차원 객체가 가지는 색상, 텍스쳐 등의 특징들을 제외하고 표면에 대해서만 형상에 대해서만 표현함. 이 때 표면의 형상은 법선을 가지는 삼각형으로 구성됨. ASCII STL ASCII STL파일은 'solid'..

[윈도우10 메일] 네이버 계정 연동 방법 [내부링크]

왼쪽 사이드바의 내 메일함 옆 설정 버튼 클릭 POP/SMTP 설정 클릭 후 POP/SMTP 사용 버튼 클릭 후 확인 윈도우 메일 앱의 계정 추가 버튼 클릭 후 고급 설정 버튼 클릭 인터넷 전자 메일 클릭 다음과 같이 계정정..

8. Lighting maps [내부링크]

Diffuse maps Lighting scene에서 fragment의 diffuse색상값을 텍스쳐(texture)를 이용해서 표현하는것을 diffuse map이라 함.(기존의 텍스쳐의 원리와 동일함) 정의 기존의 Material struct에서 diffuse색상 타입..

SMB1 활성화하는 법(보안상 권장하지 않음) [내부링크]

상태 확인하는 법 Dism /online /Get-Features /format:table | find "SMB1Protocol" 활성화하는 법 Dism /online /Enable-Feature /FeatureName:"SMB1Protocol" -All

ToolBar내 컨트롤 스타일 지정하는 법 [내부링크]

ToolBar내 컨트롤에 스타일을 지정하기 위해서는 ResourceKey객체를 정의해야 함. 즉, 스타일을 적용하려면 x:key속성을 ToolBar내 ResourceKey객체 값으로 할당해야 함. Toolbar에 지정된 ResourceKey ButtonStyl..

빌드 이벤트(Build event)로 폴더 또는 파일 복사하기 [내부링크]

빌드 이벤트 스크립트(bulid event script) /* Data폴더 내 모든 폴더, 파일을 CopyData폴더로 복사함. /Y : 기존에 파일이 있는 경우 덮어씀. /E : 해당 폴더 구조 내 모든 폴더와 파일을 복사함. */ xcopy "$(So..

DataGrid의 Row에 번호매기는 법 [내부링크]

Converter class RowNumberConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var row = values[0] as RowData; var rowLi..

7. Material [내부링크]

실제 세상에서는 강철보다 점토가 빛나는 것처럼 물체들은 빛에 대해서 다르게 다르게 반응함. 마찬가지로 몇몇 물체들은 빛을 퍼지지 않게하여 하이라이트 영역을 좁게하며 다른 물체들은 빛을 퍼지게하여 더 큰..

6. Light [내부링크]

Color 실제 세상에서 우리가 인지하는 색상은 물체가 가지고 있는 색상이 아닌 물체로부터 반사되는 색상임. 이를 위해서 OpenGL에서는 광원을 정의하여, 광원의 색상과 물체의 색상을 곱하면 반사되는 색상을 얻..

아크볼 카메라(Arcball Camera) [내부링크]

개념 구면 좌표계에 마우스의 위치를 따라 호(arc)를 생성하여, 해당 호가 속한 평면의 법선벡터를 축으로 카메라를 회전시키는 방법. 방법 구면좌표계로 변환 아래 그림처럼 마우스로 클릭한 스크린의 좌표를 구..

4. Texture [내부링크]

더 사실적인 형상을 만들어내기 위해서는 색상이 있는 정점이 더 많이 필요함. 하지만 정점을 더 정의하는 것은 overhead를 발생시키므로 texture를 대신 사용함. 여기서 Texture란 객체에 디테일을 위해서 사용되..

FolderBrowserDialog대신 사용할 수 있는 폴더 선택창 [내부링크]

CommonOpenFileDialog를 사용하면 기존의 OpenFileDialog형태의 선택창에서 폴더를 선택할 수 있도록 해줌. 참조 추가 Microsoft.WindowsAPICodePack.dll, Microsoft.WindowsAPICodePack.Shell.dll 필요. Nuget을..

WPF에서 Winform Control을 사용하는 법 [내부링크]

참조 추가 WindowsFormsIntegration.dll System.Windows.Forms.dll 사용법 <WindowsFormsHost x:Name="host" Grid.Row="1"/> public MainWindow() { InitializeComponent(); host.Child = new MaskedTextBox(); }..

계층구조 트리뷰(Hierarchical TreeView) [내부링크]

트리뷰에 바인딩할 리스트를 계층구조 형식으로 생성 public class Folder { public string Name { get; set; } public List<Folder> SubFolders { get; set;} } public class MainViewModel { public ObservableC..

라디오버튼의 IsChecked프로퍼티와 Enum타입 바인딩 [내부링크]

ViewModel public enum FilterType { None, Size, Perent } private FilterType filterOption public FilterType FilterOption { get => filterOption; set => Set(ref filterOption, value); } XAML <RadioButton..

라디오버튼에 토클버튼 스타일 적용하는 법(Style RadioButton as ToggleButton) [내부링크]

라디오 버튼의 스타일을 토글버튼 타입으로 지정하면 토글버튼처럼 보이는 라디오버튼을 만들 수 있음. <RadioButton Content="radioButton1" Style="{StaticResource {x:Type ToggleButton}}" > 토글버튼 스타일..

ViewModel에서 DataGrid에서 선택된 모든 행 가져오는 법 [내부링크]

xaml SelectedChanged이벤트를 Command로 지정하여 바인딩하고 CommandParameter로 DataGrid의 SelectedItems프로퍼티를 전달함. <DataGrid x:Name="dataGrid1" ...> <i:Interaction.Triggers> <i:EventTrigger Ev..

TabControl 참고사항 [내부링크]

ItemsControl(ItemSource속성을 가지는 Control)을 바인딩 할 경우 해당 아이템은 xaml에서 비어있는 상태를 유지해야함. 예를 들어 TabControl의 ItemSource를 바인딩했으면 xaml상에서 TabItem을 명시적으로 생..

GridSplitter를 사용하여 행 또는 열 크기 조절하기 [내부링크]

방법 크기조절할 그리드 열 사이에 GridSplitter(COL2)를 위치 Grid (COL2)의 크기는 고정값으로 지정 열의 크기를 조절할 경우 HorizontalAlignment = Center, VerticalAlignment = Stretch →행을 조절할 경우는..

바인딩된 텍스트 박스에 소수점을 입력 못하는 경우 해결방법 [내부링크]

원인 .NET 4.5에서는 TextBox의 Text프로퍼티에 부동소수타입(double, float)을 바인딩하고, 바인딩 옵션을 UpdateSourceTrigger=PropertyChanged 로 설정한 경우 소수점('.')을 입력하지 못함. 예시 public class..

1. Drawing Primitive [내부링크]

Rectangle(Immediate mode) class Game : GameWindow { protected override void OnLoad(EventArgs e) { base.OnLoad(e); base.Title = "Hello OpenTK!!"; // 화면 clear 색상 지정 GL.ClearColor(Color.SkyBlue);..

Dialog의 Filter설정하는법 [내부링크]

사용법 dialog.Filter = "표시할 이름1|*.확장자1|표시할 이름2|*.확장자2-1; *.확장자2-2|모든파일|*.*; 예시1 dialog.Filter = "3d files (*.stl)|*.stl|obj files (*.obj)|*.obj"; 예시2 dialog.Filter = "3d f..

3. Buffer [내부링크]

VBO(Vertex Buffer Object) GPU에 데이터를 보내는 작업은 느리기 때문에 한번에 정점 한개씩 보내지 않고 한번에 많은 데이터를 보냄. // vertex attribute 정의 float[] vertices = new float[] { -0.5f, -0.5f,..

2. Shader [내부링크]

Graphic Pipeline OpenGL의 3D좌표를 화면의 2D픽셀 좌표로 변환하는 작업 그래픽 파이프라인은 몇 개의 단개로 나뉘며 각 단계는 이전 단계의 아웃풋을 인풋으로 요구함. 각 단계는 매우 전문화되어있어 병렬적으..

WPF의 뷰(UserControl) 스위칭하는 방법 [내부링크]

결과화면 상단 버튼을 클릭하면 해당하는 UserControl로 설정함. 소스코드 XAML DataTemplate을 이용해서 데이터 타입과 매칭할 뷰를 지정함. ContentControl은 스위칭되는 뷰의 영역을 지정하며, Content프로퍼티..

Event를 Command로 설정하는 법 [내부링크]

Button의 경우는 기본적으로 Click에 대한 Command를 제공함. 하지만 그 외의 이벤트나 버튼 이외의 컨트롤의 경우에는 Command를 사용할 수 없음. 그러나 다음 방법을 통해서 모든 이벤트와 컨트롤에 대해서 Comm..

DataGrid 참고사항 [내부링크]

ItemsControl(ItemSource속성을 가지는 Control)을 바인딩 할 경우 해당 아이템은 xaml에서 비어있는 상태를 유지해야함. 예를 들어 TabControl의 ItemSource를 바인딩했으면 xaml상에서 TabItem을 명시적으로 생..