전체 글
-
[WinForm - ProfessionalColorTable] Custom MenuStripC# 2021. 10. 29. 13:00
ProfessionalColorTable 사용하여 WinForm에서 기본 제공되는 Menu 컨트롤의 색상을 변경하는 방법입니다. 1. 비쥬얼 스타일 활성화 Program.cs에 아래 코드를 추가하여 비쥬얼 스타일을 Enable 처리합니다. Application.EnableVisualStyles(); 2. ColorTable 적용 ProfessionalColorTable 상속 받은 CustomProfessionalColorTable Class를 생성 후 필요한 옵션의 프로퍼티를 override 하고 변경하고 싶은 영역을 변경합니다. public class CustomProfessionalColorTable : ProfessionalColorTable { // 재정의 생성을 통해 프로퍼티 override 처..
-
[CUDA, cuDNN] 설치C# 2021. 9. 29. 10:52
CUDA 버전 확인 CUDA 설치 시 본인의 GPU에 맞는 CUDA 버전을 선택해야 합니다. 명령 프롬프트 실행 후 nvcc -V을 입력하면 CUDA 버전이 나오는데 해당 버전에 맞는 CUDA Toolkit을 설치하도록 합니다. nvidia-smi 명령을 통해 그래픽카드에서 지원 가능한 CUDA 버전을 확인할 수 있습니다. 아래 링크를 통해 본인의 CUDA 버전에 맞는 툴킷을 설치할 수 있습니다. https://developer.nvidia.com/cuda-toolkit-archive CUDA Toolkit Archive Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be fo..
-
[C# - Bitmap] BitMap 포인터 접근하기C# 2021. 3. 10. 17:07
이번 글은 Bitmap Pixel에 대한 짧은 글입니다. 이미지 처리를 하다 보면 이미지의 각 픽셀의 정보가 필요할 때가 있습니다. 이때 각 픽셀의 값을 가져오기 위해선 GetPixel(x, y)를 사용할 수 도 있지만 큰 이미지를 처리한다면 많은 시간이 소요됩니다. 포인터를 이용하여 비트맵의 각 픽셀에 빠르게 접근하는 방법을 살펴보도록 하겠습니다. 1. unsafe 우선 C#에서 포인터를 사용하려면 unsafe를 이용해야 합니다. 다음과 같이 함수 앞에 unsafe 선언을 한 후 해당 프로젝트에서 unsafe코드를 사용할 수 있도록 수정해 주면 됩니다. public unsafe void PixelColor(Bitmap pImage) { // 이곳에서 포인터를 사용하세요. } unsafe를 선언 후 프로..
-
[WinForm - Designer] UserControl 내 객체 추가가 안될때 해결 방법C# 2021. 3. 4. 12:31
UserControl을 상속받은 커스텀 컨트롤 제작 후 디자이너에서 부모 객체로 해당 컨트롤이 추가가 안 되는 것을 알게 되었습니다. 디자이너에서 다른 컨트롤을 컨트롤 내에 넣으려면 컨트롤 컨테이너를 작동시켜합니다. 하지만 UserControl 개체는 컨트롤을 만들 때만 컨트롤 컨테이너 역할을 수행할 수 있다고 합니다. 자세한 내용은 이곳을 확인해 보시면 되며 다음의 코드를 추가함으로써 해결할 수 있습니다. [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] public partial class PsTableView : UserControl { }
-
[ios - Swift] LaunchScreen 설정ios 2021. 3. 2. 14:14
런치 스크린이란 사용자에게 자연스러운 앱 사용경험을 제공하기 위해 앱을 실행 시 데이터를 초기화할 시간을 벌어주는 역할을 합니다. 이번 글에는 런치 스크린 변경 방법과 초기화 데이터를 어디에 작성해야 하는지만 알아보겠습니다. 런치 스크린 설정 방법 런치 스크린을 따로 추가했다면 위 콤보박스에서 런치 스크린을 선택해 주면 간단하게 변경 가능합니다. AppDelegate.swift => application(_didFinishLaunchingWithOptions:) 런치 스크린에 컨트롤러가 연결이 안되서 찾아보니 위 메소드에 작성해야 한다고 합니다. application(_didFinishLaunchingWithOptions:)는 런치 스크린이 화면에 표시 후 실행되며 메소드 안에 작성된 코드가 모두 실행되..
-
[ios - Swift] NSCache Image 사용하기ios 2021. 2. 9. 17:57
안녕하세요. 이번에 소개할 내용은 NSCache입니다. 앱에서 사용할 이미지를 매번 서버에서 불러오게 된다면 된다면 자원 낭비이기 때문에 이번 글에서는 이를 해결하기 위해 캐시에 대해 정리하려고 합니다. 캐시란 데이터나 값을 미리 복사해 놓는 임시 장소라고 정의되어있습니다. 이를 이용해서 동일한 작업을 진행할 때 작업 시간이 오래 걸리는 데이터를 미리 저장해 두었다가 사용하는 것을 의미합니다. 우리는 NSCache를 사용한 메모리 캐시와 FileManager를 사용한 디스크 캐시의 사용 방법 및 성능 차이를 비교해 보도록 하겠습니다. 1. 메인 스토리 보드 작성 메인 스토리 보드의 디자인은 버튼과 이미지 뷰를 이용해 제작하였고 각 버튼의 기능은 다음과 같습니다. FIle Delete : FileManag..
-
[ios - Swift] App 상태 변경에 따른 Widget 초기화ios 2021. 2. 4. 16:01
앱 상태 변경에 따라 위젯의 타임라인을 다시 설정해 줘야할 때가 있다. 이 때 앱에서 WidgetKit에게 아래와 같은 방법으로 타임라인을 다시 요청하도록 할 수 있다. WidgetCenter.shared.getCurrentConfigurations { (result) in switch result { case .success(let widgets): for info in widgets { /// 특정 위젯 타임라인 로드 WidgetCenter.shared.reloadTimelines(ofKind: info.kind) print(info.family, info.kind) // 위젯의 크기, 식별자 } break case .failure(let error): print("Fail") break defaul..
-
[ios - SwiftUI] Widget 사용하기 (2/2)ios 2021. 2. 4. 15:37
위 이미지는 뉴스 API를 이용해 받아온 데이터 리스트를 선택하면 해당 뷰로 이동할 수 있도록 제작한 위젯입니다. 이번 글에서 코드를 살펴보도록 하겠습니다. struct myStaticWidgetEntryView : View { var entry: Provider.Entry var body: some View { VStack { Color(.systemOrange) Text("최신 뉴스 20") } } } struct myStaticWidgetEntryView : View { var entry: Provider.Entry var body: some View { ZStack { Color(.systemOrange) VStack { Text("최신 뉴스 20") } } } } 뷰 백그라운드의 색상을 변경하기..