WPF의 윈도우를 커스터마이징하는 방법에는 두가지 방법이 있음. 윈도우의 WindowStyle="None" 지정하여 상단 캡션바를 없앤 후 스타일을 적용하는 방법 스타일에서 WindowChrome속성을 지정하는방법 기본적으로..
Blending은 물체의 투명도(transparency)를 구현하기 위한 기술로 투명한 물체는 자신의 색상뿐 아니라 뒤에 있는 객체들의 색상도 포함하여 화면에 나타나게 됨. 물체의 투명정도는 색상의 4번째 요소인 알파(alp..
Depth buffer는 color buffer와 같은 버퍼의 한 종류로, 각 fragment의 깊이값(z값)을 가지고 있음. Depth test가 실행되면, OpenGL은 depth buffer와 fragment의 깊이 값을 테스트하고, 테스트를 통과하면 depth..
화면에 모델을 렌더링 시 들쭉날쭉한(jagged) 모서리를 볼 수 있음. 이러한 모서리는 rasterizer가 정점 데이터를 화면의 fragment로 변환하는 과정에서 나타나게 됨. 큐브를 자세히보면 모서리를 구성하는 픽셀의..
기본뷰 <TabControl> <TabItem Header="TabItem"> <Grid Background="#FFE5E5E5"/> </TabItem> <TabItem Header="TabItem"> <Grid Background="#FFE5E5E5"/> </TabItem> </TabControl> Tab header 위치 변경 <Ta..
프로젝트 Lib1, Lib2(같은 네임스페이스.클래스 존재) 프로젝트 Lib1, Lib2에 같은 네임스페이스, 클래스명을 가지는 Lib.Class1가 존재함. 외부 프로젝트에서 Lib1, Lib2를 동시에 참조하는 경우 Lib.Class1을 구..
다음과 같은 LoaderLock에러가 발생함. 임시 해결방편으로 예외설정에서 LoaderLock을 제외하면 됨. 디버그 → 창 → 예외설정으로 이동한 후 LocderLock검색하여 체크해제하면 됨.
internal class는 해당 어셈블리 내부에서만 사용할 수 있고 외부 어셈블리에서는 사용할 수 없음. 따라서 단위 테스트 프로젝트에서 internal class를 테스트 할 수 없는데 다음과 같은 방법으로 해결할 수 있음...
임의의 축 회전 공식 유도 방법과 행렬식으로 만들기 위해 필요한 벡터의 투영, 외적의 행렬 표현식은 다음과 같음. ㆍ임의의 축 회전공식 유도 ㆍ벡터의 투영, 외적 행렬식
초기 구현 First, Second Column을 가지는 DataGrid에서 First Column을 Visibility속성을 바인딩하여 숨기기 DataGridColumn의 Visibility를 MainViewModel의 bool타입인 IsFirstColumnVisible속성과 바인딩 <Da..
참고 https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95%EC%84%B1
의존 프로퍼티(dependency property) WPF에 새롭게 도입된 개념으로 데이터 바인딩, 애니메이션 등에 사용되며 기존의 프로퍼티에 변경통보(Change notification), 프로퍼티 값 상속(Property value inheritance),..
XAML 선언형 프로그래밍 언어 네임스페이스, 데이터 타입(클래스), 프로퍼티, 이벤트 등은 XML의 네임스페이스, 엘리먼트, 어트리뷰트와 서로 매핑됨. XAML의 오브젝트 엘리먼트(object element) 선언 → 기본 생..
현재 뷰에적용된 모델뷰, 투영, 뷰포트 매트릭스를 가져오기 위해서 GL.GetDouble, GL.GetInt 등의 함수를 사용하지만 이 함수들은 GL.MatrixMode로 매트릭스를 지정한 경우에만 해당하는 매트릭스 값을 제대로 가..
정의 STL파일은 3차원 객체가 가지는 색상, 텍스쳐 등의 특징들을 제외하고 표면에 대해서만 형상에 대해서만 표현함. 이 때 표면의 형상은 법선을 가지는 삼각형으로 구성됨. ASCII STL ASCII STL파일은 'solid'..
왼쪽 사이드바의 내 메일함 옆 설정 버튼 클릭 POP/SMTP 설정 클릭 후 POP/SMTP 사용 버튼 클릭 후 확인 윈도우 메일 앱의 계정 추가 버튼 클릭 후 고급 설정 버튼 클릭 인터넷 전자 메일 클릭 다음과 같이 계정정..
Diffuse maps Lighting scene에서 fragment의 diffuse색상값을 텍스쳐(texture)를 이용해서 표현하는것을 diffuse map이라 함.(기존의 텍스쳐의 원리와 동일함) 정의 기존의 Material struct에서 diffuse색상 타입..
상태 확인하는 법 Dism /online /Get-Features /format:table | find "SMB1Protocol" 활성화하는 법 Dism /online /Enable-Feature /FeatureName:"SMB1Protocol" -All
ToolBar내 컨트롤에 스타일을 지정하기 위해서는 ResourceKey객체를 정의해야 함. 즉, 스타일을 적용하려면 x:key속성을 ToolBar내 ResourceKey객체 값으로 할당해야 함. Toolbar에 지정된 ResourceKey ButtonStyl..
빌드 이벤트 스크립트(bulid event script) /* Data폴더 내 모든 폴더, 파일을 CopyData폴더로 복사함. /Y : 기존에 파일이 있는 경우 덮어씀. /E : 해당 폴더 구조 내 모든 폴더와 파일을 복사함. */ xcopy "$(So..
Converter class RowNumberConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { var row = values[0] as RowData; var rowLi..
실제 세상에서는 강철보다 점토가 빛나는 것처럼 물체들은 빛에 대해서 다르게 다르게 반응함. 마찬가지로 몇몇 물체들은 빛을 퍼지지 않게하여 하이라이트 영역을 좁게하며 다른 물체들은 빛을 퍼지게하여 더 큰..
Color 실제 세상에서 우리가 인지하는 색상은 물체가 가지고 있는 색상이 아닌 물체로부터 반사되는 색상임. 이를 위해서 OpenGL에서는 광원을 정의하여, 광원의 색상과 물체의 색상을 곱하면 반사되는 색상을 얻..
개념 구면 좌표계에 마우스의 위치를 따라 호(arc)를 생성하여, 해당 호가 속한 평면의 법선벡터를 축으로 카메라를 회전시키는 방법. 방법 구면좌표계로 변환 아래 그림처럼 마우스로 클릭한 스크린의 좌표를 구..
추가예정
더 사실적인 형상을 만들어내기 위해서는 색상이 있는 정점이 더 많이 필요함. 하지만 정점을 더 정의하는 것은 overhead를 발생시키므로 texture를 대신 사용함. 여기서 Texture란 객체에 디테일을 위해서 사용되..
CommonOpenFileDialog를 사용하면 기존의 OpenFileDialog형태의 선택창에서 폴더를 선택할 수 있도록 해줌. 참조 추가 Microsoft.WindowsAPICodePack.dll, Microsoft.WindowsAPICodePack.Shell.dll 필요. Nuget을..
참조 추가 WindowsFormsIntegration.dll System.Windows.Forms.dll 사용법 <WindowsFormsHost x:Name="host" Grid.Row="1"/> public MainWindow() { InitializeComponent(); host.Child = new MaskedTextBox(); }..
트리뷰에 바인딩할 리스트를 계층구조 형식으로 생성 public class Folder { public string Name { get; set; } public List<Folder> SubFolders { get; set;} } public class MainViewModel { public ObservableC..
ViewModel public enum FilterType { None, Size, Perent } private FilterType filterOption public FilterType FilterOption { get => filterOption; set => Set(ref filterOption, value); } XAML <RadioButton..
라디오 버튼의 스타일을 토글버튼 타입으로 지정하면 토글버튼처럼 보이는 라디오버튼을 만들 수 있음. <RadioButton Content="radioButton1" Style="{StaticResource {x:Type ToggleButton}}" > 토글버튼 스타일..
xaml SelectedChanged이벤트를 Command로 지정하여 바인딩하고 CommandParameter로 DataGrid의 SelectedItems프로퍼티를 전달함. <DataGrid x:Name="dataGrid1" ...> <i:Interaction.Triggers> <i:EventTrigger Ev..
ItemsControl(ItemSource속성을 가지는 Control)을 바인딩 할 경우 해당 아이템은 xaml에서 비어있는 상태를 유지해야함. 예를 들어 TabControl의 ItemSource를 바인딩했으면 xaml상에서 TabItem을 명시적으로 생..
방법 크기조절할 그리드 열 사이에 GridSplitter(COL2)를 위치 Grid (COL2)의 크기는 고정값으로 지정 열의 크기를 조절할 경우 HorizontalAlignment = Center, VerticalAlignment = Stretch →행을 조절할 경우는..
원인 .NET 4.5에서는 TextBox의 Text프로퍼티에 부동소수타입(double, float)을 바인딩하고, 바인딩 옵션을 UpdateSourceTrigger=PropertyChanged 로 설정한 경우 소수점('.')을 입력하지 못함. 예시 public class..
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 = "표시할 이름1|*.확장자1|표시할 이름2|*.확장자2-1; *.확장자2-2|모든파일|*.*; 예시1 dialog.Filter = "3d files (*.stl)|*.stl|obj files (*.obj)|*.obj"; 예시2 dialog.Filter = "3d f..
VBO(Vertex Buffer Object) GPU에 데이터를 보내는 작업은 느리기 때문에 한번에 정점 한개씩 보내지 않고 한번에 많은 데이터를 보냄. // vertex attribute 정의 float[] vertices = new float[] { -0.5f, -0.5f,..
Graphic Pipeline OpenGL의 3D좌표를 화면의 2D픽셀 좌표로 변환하는 작업 그래픽 파이프라인은 몇 개의 단개로 나뉘며 각 단계는 이전 단계의 아웃풋을 인풋으로 요구함. 각 단계는 매우 전문화되어있어 병렬적으..
결과화면 상단 버튼을 클릭하면 해당하는 UserControl로 설정함. 소스코드 XAML DataTemplate을 이용해서 데이터 타입과 매칭할 뷰를 지정함. ContentControl은 스위칭되는 뷰의 영역을 지정하며, Content프로퍼티..
Button의 경우는 기본적으로 Click에 대한 Command를 제공함. 하지만 그 외의 이벤트나 버튼 이외의 컨트롤의 경우에는 Command를 사용할 수 없음. 그러나 다음 방법을 통해서 모든 이벤트와 컨트롤에 대해서 Comm..
ItemsControl(ItemSource속성을 가지는 Control)을 바인딩 할 경우 해당 아이템은 xaml에서 비어있는 상태를 유지해야함. 예를 들어 TabControl의 ItemSource를 바인딩했으면 xaml상에서 TabItem을 명시적으로 생..