728x90

프로그래밍 410

WPF] 어플리케이션 종료 방법

Application.Current.Shutdown() 일반적인 종료 방법. Shutdown을 호출하면 어플리케이션이 종료되며, Shutdown은 WPF에서 암시적으로 호출됨. Shutdown 되는 시기는 정확히 알 수 없지만 Exit 이벤트를 이용해서 실행이 중지되는 시점을 확인하고 필요한 작업을 처리할 수 있음. System.Environment.Exit() 현재 어플리케이션의 모든 쓰레드를 중단시켜 애플리케이션을 종료시키는 방법. 어플리케이션을 즉시 죽일 수 있음. Process.GetCurrentProcess().Kill() 강제로 프로세스를 종료시키는 방법. 강력하지만, 메인 윈도우에 종료 요청을 내리는 방식으로, 즉각적으로 앱에 종료를 요청하지 않아 시간 지연이 발생할 수도 있음.

OpenCV] findContours를 사용해 윤곽(contour) 추출하기

findContours를 이용해서 윤곽(contour)을 추출하는 걸 시도했다.외곽선 경계가 명확하지 않은 것도 있고, 응용 방법을 잘 몰라서 경계선이 명확히 그어지지 않은 것도 있는 듯 하다. 소스코드 #include #include #include #include using namespace cv; using namespace std; int main(void) { Mat image; image = imread("IU.jpg", 1); namedWindow("Display Window", CV_WINDOW_AUTOSIZE); imshow("Display Window", image); Mat gray; cvtColor(image, gray, CV_BGR2GRAY); Canny(gray, gray, 10..

Library/OpenCV 2018.04.26

[WPF] 다른 스레드에서 UI 스레드 쪽에 접근하기

1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다. 2. "다른 스레드가 소유하고 있는 오브젝트에 현재 스레드가 접근할 수 없다"(The calling thread cannot access this object because a different thread owns it.) 최근 윈폼 프로그램을 WPF로 바꾸는 과정에서 주기적으로 창을 호출하는 과정에서 위 오류가 발생했다.윈폼에서는 이런 일이 없었지만 WPF에서는 UI 스레드와 그렇지 않은 스레드로 나누고 있어 이런 오류가 발생한다.이럴 때는 Dispatcher.Invoke를 이용하여 해결해야 한다. Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate..

백준] 1356 - 유진수

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다작거나 같은 자연수이다. 출력첫째 줄에 N이 유진수이면 YES, 아니면 NO를 출력한다. 소스코드 #include #include #include using namespace std; int main(void) { int n, tmp, sub1, sub2, size; vector arr; bool check = false; cin >> n; tmp = n; while (tmp > 0) { arr.push_back(tmp % 10); tmp /= 10; } size = arr.size(); if (size > 1) { for (int i = 0; i < size; i++) { sub1 = su..

백준] 14501 - 퇴사

시간 제한 : 2초메모리 제한 : 512MB 입력첫째 줄에 N (1 ≤ N ≤ 15)이 주어진다.둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000) 출력첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. 소스코드 #include #include using namespace std; int main(void) { pair arr[16] = { {0,0}, }; int dp[16] = { 0, }, n; cin >> n; for (int i = 0; i > arr[i].first >> arr[i].second; for (int i = 0; i < n; i++) { if ..

백준] 5212 - 지구 온난화(COCI 2012/2013)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 지도의 크기 R과 C (1 ≤ R, C ≤ 10)가 주어진다. 다음 R개 줄에는 현재 지도가 주어진다. 출력50년 후의 지도를 출력한다. 소스코드 #include #include using namespace std; int main(void) { int r, c, startR, startC, endR, endC; string arr[10], next[10]; cin >> r >> c; for (int i = 0; i > arr[i]; next[i] = arr[i]; } for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { if ((char)arr[i][j] == ..

백준] 11403 - 경로 찾기

시간 제한 : 1초메모리 제한 : 256MB 입력첫째 줄에 정점의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄부터 N개 줄에는 그래프의 인접 행렬이 주어진다. i번째 줄의 j번째 숫자가 1인 경우에는 i에서 j로 가는 간선이 존재한다는 뜻이고, 0인 경우는 없다는 뜻이다. i번째 줄의 i번째 숫자는 항상 0이다. 출력총 N개의 줄에 걸쳐서 문제의 정답을 인접행렬 형식으로 출력한다. 정점 i에서 j로 가는 경로가 있으면 i번째 줄의 j번째 숫자를 1로, 없으면 0으로 출력해야 한다. 소스코드 #include using namespace std; int graph[100][100], n; void Floyd() { for (int k = 0; k < n; k++) for (int i = 0; i ..

728x90