본문 바로가기

분류 전체보기14

[WPF] WPF에 Winform 컨트롤 불러오는 방법 WPF에서 Winform에서 사용하는 컨트롤을 Window안에 넣는 방법이다. 해당 컨트롤은 sameControlCheck의 이름을 가진 WPF 프로젝트와는 별도의 프로젝트에 존재하는 WinFormControl이라는 컨트롤의 형식이다. 먼저 WPF 프로젝트에 Winform을 위한 참조를 추가한다. 추가하는 참조는 아래와 같이 2개가 있다. 해당 참조를 추가한 뒤 Winform 컨트롤을 사용할 WPF XAML쪽에서 다음과 같이 입력하면 Winform 컨트롤을 사용할 수 있다. 이때 꼭 WindowsFormsHost를 이용해 감싸줘야 Winform 컨트롤을 WPF에서 정상적으로 사용할 수 있다. 2023. 9. 6.
[WPF] 컨트롤에 동적으로 스타일 적용 WPF를 사용하다가 xaml 파일에서가 아닌 cs 파일에서 동적으로 컨트롤을 추가하는 경우가 있다. 해당 경우에 미리 등록해놓은 스타일을 불러올 수 있는 방법이다. xaml 파일 구조 cs 파일 구조 using System.Windows; using System.Windows.Controls; //버튼 스타일을 가져올 xaml파일 지정 ResourceDictionary resourceDictionary = new ResourceDictionary { Source = new Uri("/Resources/Style.xaml", UriKind.RelativeOrAbsolute) }; //컨트롤 생성 private Button CreateButton() { //원하는 버튼 스타일의 이름을 통해 받아옴 var b.. 2023. 5. 15.
[C#] 파일을 줄단위로 마지막까지 읽어오기 C#에서 텍스트파일을 처음부터 한줄씩 (개행문자 단위로) 끝까지 읽어오고 싶은 경우에 사용할 수 있다. using System.IO; string FilePath; StreamReader reader = new StreamReader(FilePath); string readLine; while ((readLine = reader.ReadLine()) != null) { //한줄씩 읽어온 내용에 대한 처리 } 한줄씩 읽어오며, 해당 줄이 null값인 경우(문서가 끝난 경우) 해당 코드가 종료된다. 해당 코드를 이용하여 마지막까지 한줄 단위로 읽어와 처리를 진행할 수 있다. 2023. 4. 19.
글자 너비가 커지는 이유 - 전자, 반자 타자를 치다보면 글자간의 간격이 크게 벌어지는 현상이 발생하는 경우가 있다. 해당 증상의 원인 중 하나는 글자의 형식이 전자의 형식으로 바뀐 것이다. 글자의 인식이 대부분 반자 형식으로 되어있기 때문에 전자로 입력이 되는 경우 글자를 인식하지 못하여 컴퓨터를 이용하는데 불편이 생길 수 있다. '전자'는 정사각형 형태의 공간에 글자가 적히는 형식을 말한다. '반자'는 전자의 세로 절반의 공간에 글자가 적히는 형식을 말한다. 전자의 형식은 'alt' + '=' 버튼으로 활성/비활성화할 수 있고, 해당 버튼이 먹히지 않는 경우, 화면 우측 하단의 언어 입력 모드 설정에서 우측클릭을 통해서 변경 가능하다. 2023. 4. 7.
[WPF] XAML 디자인 창 컨트롤 숨기기 XAML로 디자인을 하다보면 컨트롤이 겹쳐서 뒤의 컨트롤을 확인하고 싶지만 그럴 수 없는 경우가 발생한다. 이 때 사용할 수 있는 것이 바로 d:IsHidden="True" 이다. 해당 문장을 컨트롤에 입력하면 기존에 보였던 컨트롤이 숨겨지면서 뒤에 있는 컨트롤을 확인할 수 있다. 해당 숨기기 기능은 디자인 편집의 편의를 위한 기능이다. 디자인 편집창에서만 적용이 되며, 프로그램을 실행했을 때는 숨기기가 적용되지 않는다. 2023. 4. 7.
[WPF] ListView 갱신하는 방법 WPF 에서 ListView에 List를 바인딩해서 사용하는 경우, 바인딩되어 있는 List가 갱신되지 않는 경우가 발생한다. 이 경우에 사용할 수 있는 방법이다. using System.ComponentModel; public class GroupInfo { string GroupName { get; set; } int GroupMemeberCnt { get; set; } } List groupinfos = new List(); private void RefreshGroupList() { listview_GroupList.ItemsSource = groupinfos; //바인딩할 List 리스트뷰에 바인딩 //바인딩한 리스트 갱신 ICollectionView view = CollectionViewSou.. 2023. 4. 6.
임의의 다각형 또는 꺾인 선으로 곡선 만들기 - Chaikin's Algorithm 개념 임의의 다각형 또는 꺾인 선을 그릴때 날카로운 꼭지점을 부드럽게 표현할 때 사용할 수 있는 알고리즘이다. 1974년 유타 주립대의 George Chaikin이 만든 알고리즘으로, 점과 점 사이 거리의 비율로 새로운 점을 생성하여 해당 점들로 선들을 다시 이어주는 방식을 사용해서 모서리를 깎아나가는 방식이다. 해당 알고리즘을 거치는 횟수가 많아지면 곡선이 부드러워지지만, 횟수가 많아질수록 새로 생성되는 점이 많아 처리 속도가 느려질 수 있는 단점이 존재한다. 또한 기존에 존재하던 꼭지점을 지나지 않기 때문에 꼭지점을 반드시 지나야 하는 경우에는 사용할 수 없다. 풀이 임의의 다각형 또는 꺾인 선을 이루고 있는 점 중에서 2점을 연결한 직선을 그리고, 해당 직선상의 거리비율로 새로운 점을 생성한다. 기.. 2023. 2. 22.
직선과 원이 만나는 지점의 좌표 구하기 개념 평면상에서 직선과 원이 만나는 지점의 좌표를 구하는 방법 확인한다. 직선과 원이 만나는 지점의 x, y 좌표는 직선과 원이 모두 동일하기 때문에 직선과 원의 방정식을 연립하여 해를 구할 수 있다. 풀이 먼저 직선의 방정식과 원의 방정식을 구한다. 직선의 방정식은 다음 링크에 자세히 설명되어 있다. https://minstudyroom.tistory.com/5 그 다음 위의 식을 통해서 연립을 이용하여 원의 방정식 y에 직선의 방정식 값을 넣으면 아래와 같이 정리할 수 있다. 원이 만나는 지점은 2점이 만나는 경우, 1점이 만나는 경우, 만나지 않는 경우가 있으며 2차 방정식의 판별식으로 확인가능하다. 해당 만나는 점의 좌표는 x에 대한 식의 해와 그 해를 이용해 방정식에 대입하면 구할 수 있다. x.. 2023. 2. 18.