본문 바로가기

전체 글

(38)
[WPF-Find Different] : #2 마우스클릭 이벤트 오늘 해본 것은 "마우스의 위치를 파악"하는 코드 작성이다. 위치 구하는 케이스는 2가지이다. - 마우스를 클릭한 경우 - 마우슬 드래그한 경우 MouseDown="Window_MouseDown" AllowDrop="True" DragOver="Window_DragOver" MouseDown 이벤트가 일어난 경우 "~~"의 함수가 실행된다. AllowDrop : 컨트롤에서 끌어서 놓기 작업을 수행할 수 있으면 true이고, 그렇지 않으면 false입니다. 기본값은 false입니다. - MouseDown이벤트 발생시 실행할 것 private void Window_MouseDown(object sender, MouseButtonEventArgs e) { DragDrop.DoDragDrop((Dependenc..
[Find Different] : #1 타이머 만들기 ProgressBar와 Button을 이용하여 Button을 누르면 시간이 ProgressBar의 시간이 흐르도록 만들기 Material Design Toolkit에서 기본적인 틀을 가져왔다. _DARK 기본적인 배치를 해줬다. 배치를 하다보니 여러가지 코드가 생겼는데 이 중 유용한 기능은 Name 이다. 이걸 몰라서 몇 시간을 삽질했는지 모르겠다. 이름을 지어준다면 해당 요소들에 쉽게 접근이 가능하다. 게임 시작// 버튼에 표시될 내용 버튼은 주석 이 들어가있는 곳의 내용이 버튼에 표기된다는 것만 알면 지금은 충분하다. private void Button_Click(object sender, RoutedEventArgs e) { Duration timeFlow = new Duration(TimeSpan..
[WPF] Material Design 적용 갑자기 WPF를 사용해 프로그램을 만들고 싶었다. 아무 이유도 없이 WPF .NET Core 프로젝트를 만들고 디자인 적용을 시작해보았다. 디자인 근본 Material Design을 적용할 것이다. Material Design 설치 솔루션 탐색기 - "프로젝트 파일" 오른쪽 클릭 - NuGet 패키지 관리 이 때 나는 솔루션용 NuGet 패키지 들어가서 다운 받아 놓고 맞왜틀! 하고 있었다 프로젝트 파일에서 오른쪽 클릭해서 들어가는 지식인이 되도록 하자 NuGet 패키지의 찾아보기에 Material Design 을 검색한 뒤, Material DesignThemes를 다운 받는다. 나는 이미 다운 받아 X표로 삭제 하는 것이 뜨지만 다운 하기 전이라면 마우스를 올렸을 때 모양이 떠 있을 것이다. Mate..
C++에서 OS 종류, 컴파일러 종류, 아키텍처 종류 알아 내는법. 만약 이 글을 읽고 있는 사람이 CMAKE를 알고 있다면 큰 문제가 발생하지는 않는다. CMAKE에서 OS, 컴파일러종류, 아키텍처 종류를 전부 다 손쉽게 알 수 있고, 전처리문을 만들어 주기도 한다. 먼저 제일 궁금한 부분은 OS의 종류를 파악하는것. 이라고 생각을 한다. 제일 먼저 코드로 보여 주자면 애플의 컴퓨터에 설치가 되어 있는 C++ 컴파일러 GNUC 같은 경우에는 전처리 문으로 "__APPLE__" 이 선언이 되어 있다. 추가적으로 판별 문은 총 3가지 이며. MAC, Windows, Linux 인지 체크를 하고 그 외에 모든것이 아닐경우 OTHERS로 판별하고, 컴파일을 중지한다. #define문, #if문 은 전처리문 이다. MAC에선 __APPLE__ 이 정의가 되어 있고. Windo..
#5 기존까지 한 내용 요약 및 상태. 지금 까지 현재 진행이 된 상태는. Display 클래스는 싱글톤 패턴으로 제작이 되었으며 Window에서는 그림을 그리는 모듈을 만든 상태이다. 그 외에 Keyboard, Mouse 지원, Display에서 buffer나 스왑기능을 구현을 하였다. 그 다음 Widnow 객체에서 그림을 그리는 모듈, 선을 그리는것 까지 만들었기 때문에 와이어프레임 형식의 사각형을 만들 수 있게 되었다. 와이어 프레임으로 4개의 삼각형을 그린 모습. 와이어 프레임으로 그린것을 회전을 시킨다. 그것이 위의 사진이다. 지금 현재 와이어프레임 버전, 내부가 색이 칠해진 버전, Circle과 같이 여러개의 버전을 만들 예정이고. 이제 그래픽 파이프라인을 따라서 쉐이더를 만들 예정이다. 먼저 VertexShader 만들 예정이다...
Console Graphics Library #4, Namespace 어떻게 해야할까? 터미널창에 코드를 작성을 해야할지 애매한 부분이 있다. Graphics::Input, Graphics::Output, Graphics, Graphics::Library Graphics::Enviroment 처럼 C#의 느낌을 강하게 주는 방향으로 잡아야 할지. 아니면 C++의 느낌을 주기 위해서 최대한의 네임스페이스를 줄이는 방향으로 가야할지 애매한 부분이다. 다른 사람의 코드를 보면서 이해를 하는것이 조금.. 좋을것 같다. 아니면 다른에게 물어봐야겠다.
Console Graphics Library #3 CMAKE로 빌드 시스템 구축 macOS, Windows 10으로 개발을 하다 맥에서는 XCode, 윈도우에서는 Visual Studio 2019로 개발을 하고 있다. 하지만 XCode와 Visual Studio 로 개발 하다 보니 Header File 추가 하게 될 때 XCode에서, VS에서도 마찬가지로 추가를 해줘야 하다 보니 문제점이 발생 하였다. 그래서 본 문제를 해결 하기 위하여 VS Code를 선택 하였고, 빌드는 각 OS별 별도로 해주어야 하므로 CMake로 하기로 하였다. CMAKE를 공부하고 실제로 적용하는데 약 2일이 걸렸다. 해당 이미지가 Visual Studio Code이다. 추후에 VS Code에 대해서 환경설정을 어떻게 했는지 보겠다. 오늘은 CMAKE에 대해서 한다고 했으니 Cmake에 대해서 공부한것을 ..
C++에서 Func, Predicate, Action 구현 해보기 현재 진행 상황 요약 : 윈도우 : 키보드, 마우스 입력 가능. 리눅스, 맥 : 키보드 버퍼를 읽는 방식으로 통해, 키보드만 입력 가능. 만든 부분 클래스를 순차적으로 소개할 예정. C# 에 있는 Func, Predicate, Action 기능을 구현한 내용 부터 소개. Func의 기능에서 템플릿으로 구현을 하였음. C++에서 template를 사용하여 개발 할 경우 .cpp 와 .h를 분리해서 만들 수 없으므로 .h에 모든 코드를 기입 하였다. template에서 사용된 인자들은 RETURN, ARGS 이며 처음 알았던 내용은 typename... 을 통하여 가변인자를 지원 한다는 것 이였다. C++ 11 부터 지원이 된다고 한다. 기존에는 일일이 구현을 따로 해주어야 했다고 하는데 그런 수고가 줄어들..