2012년4월9일_준구햄이 가르켜 달라는 그래프를 그리는 프로그램
목표는 ‘Ctrl + Shift + Esc’키를 눌렀을 때 나오는 windows작업관리자의 성능탭의 CPU점유율 그래프이다.
처리절차는 다음과 같다.
1. 주기적인 신호발생. (함수)
2. 배열의 시작부분에 저장.
3. 배열의 값을 크기에 따라 선의 길이를 달리해 그리기 (1차원)
4. 배열을 한 칸씩 시프트
5. 1번으로
급조한 프로그램이라 속도는 신경쓰지 않았다.
win32 API기본형에서 아래의 내용을 추가하면 된다.
1. WM_CREATE 메시지 처리부분
1: switch (message)
2: {
3: case WM_CREATE:
4: SetTimer(hWnd, 1, 50, NULL);
5: break;
2. WM_TIMER 메시지 처리부분
1: case WM_TIMER:
2: switch(wParam)
3: {
4: case 1:
5: // 1단계 랜덤생성
6: y = rand() % 100; // 0 ~ 99
7: //y = sin(2 * 3.14 / 180 * angle) * 100;
8: //angle = angle + 1;
9: data[0] = y;
10:
11: InvalidateRect(hWnd, NULL, TRUE);
12: break;
3. WM_PAINT 메시지 처리부분
1: case WM_PAINT:
2: hdc = BeginPaint(hWnd, &ps);
3: // TODO: 여기에 그리기 코드를 추가합니다.
4: MyPen=CreatePen(PS_SOLID, 1, RGB(0,0,255));
5: OldPen=(HPEN)SelectObject(hdc, MyPen);
6:
7: // 2단계 그리기
8: for(i = 199 ; i >= 0 ; --i)
9: {
10:
11: MoveToEx(hdc, i, 100, NULL);
12: LineTo(hdc, i, 100 - data[199 - i]);
13: //SetPixel(hdc, i, 100 - data[199 - i], RGB(255,0,0));
14: }
15: // 3단계 시프트
16: for(i = 200 - 2 ; i >= 0 ; --i)
17: {
18: data[i + 1] = data[i];
19: }
20: break;
<실행결과>
ramdom
★ WM_TIMER 메시지의 수정
1: case WM_TIMER:
2: switch(wParam)
3: {
4: case 1:
5: // 1단계 랜덤생성
6: //y = rand() % 100; // 0 ~ 99
7: y = sin(2 * 3.14 / 180 * angle) * 100;
8: angle = angle + 1;
9: data[0] = y;
10:
11: InvalidateRect(hWnd, NULL, TRUE);
12: break;
sine wave (fill)
★ WM_PAINT 메시지의 수정
1: case WM_PAINT:
2: hdc = BeginPaint(hWnd, &ps);
3: // TODO: 여기에 그리기 코드를 추가합니다.
4: MyPen=CreatePen(PS_SOLID, 1, RGB(0,0,255));
5: OldPen=(HPEN)SelectObject(hdc, MyPen);
6:
7: // 2단계 그리기
8: for(i = 199 ; i >= 0 ; --i)
9: {
10:
11: //MoveToEx(hdc, i, 100, NULL);
12: //LineTo(hdc, i, 100 - data[199 - i]);
13: SetPixel(hdc, i, 100 - data[199 - i], RGB(255,0,0));
14: }
sine wave
그래프 그리는게 뭐가 신기한지 –_-; 복습하는 차원에서 해봤당..
준구햄은 프로그래밍이 취미가 아니신듯;;
'낙서장' 카테고리의 다른 글
2013년10월03일_개천절_하늘이 열린날...뭉게구름과 맑음 (0) | 2013.10.04 |
---|---|
여름철 습기 짜증나시죠..습기를 없애는 '물먹는 하마'를 만들어 봅시다. (PET병도 가능함) (0) | 2012.06.11 |
acer aspire 5750g-2634g75m 간단 RAM업그레이드 사용기 (12) | 2011.12.21 |
계산기 배터리 교체기...단추형 수은전지대신 AAA size의 일반전지를 달아보자 (0) | 2011.10.18 |
포도껍질로 지시약 만들어 보자 (0) | 2011.10.12 |