C#/WinUI3 14

WinUI3에서 C++ 사용하기 (WinRT 아님)

사실 이 내용은 WinUI3에 국한된 것은 아니지만, 여기서 실행시켜볼 거니까 카테고리를 여기로 작성했다. 우선, Visual Studio Installer에 들어가서 "C++를 사용한 데스크탑 개발" > "v143 빌드 도구에 대한 C++/CLI 지원(최신)"을 선택하고 다운받는다. 그 다음, WinUI3 프로젝트를 하나 만들었다. 꼭 WinUI3가 아니어도 된다. 다만 나는 이걸로 돌려볼거라 WinUI3를 사용했다. 또, 솔루션에 새 프로젝트를 추가한다. 아래 사진과 같이 c++로 맞춰놓고 "clr"을 검색하면 여러 개가 나온다. 그 중 나는 CLR 클래스 라이브러리(.NET)을 골랐다. WinUI3의 대상 프레임워크가 .NET 6.0이기 때문이다. 무슨 프로젝트를 열건 대상 프레임워크를 잘 확인하여..

C#/WinUI3 2023.07.20

[WinUI3] 체스 게임 만들기(2) : 말 선택하기

체스 말을 설정하고 선택 가능한지, 선택하는 것까지 만들 것입니다. 말이 가질 공통적인 내용을 담은 클래스를 상속시킬 계획이기에, Piece를 하나 만들었습니다. public class Piece { public Side Side { get; set; } public PieceType Type { get; set; } } //체스에 올려질 말 6종류를 모두 이렇게 만들어 놓는다 public class King : Piece { public King(Side side, PieceType type) { this.Side = side; this.Type = type; } } enum타입을 만들어 말의 정보를 담을 수 있게 하였습니다. public enum PieceType { King, Queen, Bisho..

C#/WinUI3 2023.02.10

[WinUI3] 체스 게임 만들기(1)

간단하진 않겠지만, 체스 게임을 한 번 만들어보기로 했습니다. 자꾸 말투가 높임말에서 왔다갔다 한 것 같다면 기분 탓입니다. (분명 기분 탓일 겁니다!) 글을 시작하기 앞서, 이 글은 체스 AI, 혹은 네트워크에 대해 다루지 않을 것입니다. 그냥 단순히 혼자서 흑백 다 움직이는 그런 프로그램을 짤겁니다. 뭐, 본론으로 돌아와서... 판 만들고 체스말 놓는데 2시간이 걸렸다면 믿으시겠나요 ㅎ.. 우선 우리가 흔히 아는 8x8의 격자를 만들어봅시다. xaml로 처리할 수도 있지만, 64개를 쌩으로 만들기 싫었기 때문에 스크립트로 작성하고자 했습니다. private void SetBoard() { for(int i = 0; i < 8; i++) { RowDefinition row = new RowDefinit..

C#/WinUI3 2023.02.06

[WinUI3] 창 테두리 없애기, Title, Icon... 그리고 TitleBar.

1. 테두리 없애기 wpf에서는 xaml에 편리하게 없앨 수 있었던 테두리. 뭐.. 그렇다고 winui3에서 막 복잡하다는 건 아니지만... 뭔갈 더 설정해줘야 한다. public MainWindow() { this.InitializeComponent(); GetAppWindowAndPresenter(); _appWindow.Resize(new Windows.Graphics.SizeInt32(600, 600)); _presenter.SetBorderAndTitleBar(false, false); } private AppWindow _appWindow; private OverlappedPresenter _presenter; public void GetAppWindowAndPresenter() { var h..

C#/WinUI3 2023.02.05

[WinUI3] NoResize, 생성 시 창의 크기

WinUI3를 하면서 제일 건들고 싶었던 부분이다. (하나 더 있는데, 그건 WindowStyle. 나중에 얘도 어떻게 건들어야겠다) 얘는 wpf처럼 그냥 ResizeMode=ResizeMode.NoResize를 할 수 없고, window에도 Height=~~, Width=~~도 할 수 없다. 불-편 아니 이게 왜 안되냐고요 솔직히 디자이너 없는 것도 엄청 불편하다고요 ApplicationView.PreferredLaunchViewSize = new Size(600, 600); ApplicationView.PreferredLaunchWindowingMode = ApplicationViewWindowingMode.PreferredLaunchViewSize; 찾아보니 인터넷에서는 위의 코드를 작성해보라는데...

C#/WinUI3 2023.02.05

[WinUI3] FileOpenPicker 사용하여 이미지 불러오기

짜잔! 그냥 문서에 있는대로 코드 짜서 파일피커를 열려고 하면 저 망할 놈의 예외가 뜹니다! 와! 나 분명 문서에 있는대로 했는데! 하지만 다행히도(?) 두 줄만 추가하면 아주 잘 열리죠. FileOpenPicker picker = new FileOpenPicker(); picker.ViewMode = PickerViewMode.Thumbnail; picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".jpeg"); picker.FileTypeFilter.Add(".png"); /** 추가한 두 줄 */ // Get the curr..

C#/WinUI3 2023.02.04

[WinUI3] Color Picker 사용기

ColorPicker로 바인딩 연습하다가 하마터면 멀쩡한 요소 내비두고 뻘짓할 뻔해서 다시는 그러지 말라고 이번 글을 작성한다. xaml에 만 작성하여 앱을 만들면 다음과 같은 컬러피커를 볼 수 있다 파워포인트에서나 볼 수 있을법한 그라디언트... 나는 이런 그라디언트가 아니라 구글에서 color picker검색해서 나오는 이런 컬러피커를 원했다. 멍청하게도... "xaml은 이렇게는 못 만드는구나"해서 컬러피커를 만들 계획을 세웠다... ㅋㅋ 왜 그렇게 생각했을까.. 우연히 문서 뒤져보다가 찾아낸 프로퍼티 덕에 다행히도 굳이 만들 필요없이 바꿀 수 있었다. ColorSpectrumComponents="SaturationValue"일 때, color slide도 같이 변한다(당연하지만) 그래서 기억해야할..

C#/WinUI3 2023.01.28

[WinUI3] Navigation

1. 페이지 변경하기 네비게이션 하는 법은 간단하다 //BlankPage1.xaml.cs private void NextPage(object sender, RoutedEventArgs e) { this.Frame.Navigate(typeof(BlankPage2)); } 버튼을 누를 때, 위와 같이 작성하면 페이지가 잘 넘어간다. // - MainWindow.xaml private void frame_Loaded(object sender, RoutedEventArgs e) { frame.Navigate(typeof(BlankPage1)); } //Window는 Page가 아니여서 그런지 Navigate가 안 되는 것 같다 //그래서 Frame 넣고 Loaded 때 Navigate로 BlankPage1을 불..

C#/WinUI3 2023.01.27

[WinUI3] ToDo리스트 만들기 - 포기

취소선이 바인딩 과정에서 뭘 잘못했는지 아님 뭐가 잘못되었는지 모르겠어서 간단하게 버튼 2개와 텍스트 하나를 만들어 돌려본 결과 취소선이 그어지기만 할 뿐, 사라지지는 않았다. 바인딩 문제는 아닌 것 같다. 찾아본 결과, 텍스트블럭의 텍스트를 잠시 비운 다음 TextDecorations를 None으로 고친 후에 다시 텍스트를 채우면 정상적으로 취소선을 지울 수 있었다. 이를 ToDo리스트에 적용하려고 또 별짓을 다했다. 졸리다. 근데 결국 안 되더라고요... 그냥 투두리스트는 여기까지만 하고 포기할게요... 인터넷에서 참고한 자료들 https://github.com/microsoft/microsoft-ui-xaml/issues/1093 Setting TextDecoration = None on TextB..

C#/WinUI3 2023.01.26

[WinUI3] ToDo리스트 만들기(2)

그냥 Checkbox의 Content에 Add_TextBox.Text를 하면 바로 TextBox의 내용이 가져와졌다 그래서 여기까지는 잘 진행이 됐다. 그런데, CheckBox를 누를 때 글씨에 취소선을 긋고 싶었지만 여기서 막혀버렸다. 찾아보니 인터넷에서는 바인딩을 사용하는 방법이 올라와있었다. 그렇게 악으로깡으로 c#스크립트 내에서 어떻게든 처리해보려 노력했으나.. 결과는 실패! 아래는 노력의 흔적들 public class CheckBoxBinding: INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public bool isCBChecked; public bool IsCBChecked { get { ..

C#/WinUI3 2023.01.24