Final Grade

비밀 번호 중간 고사 중간 고사 extra 20% 중간 고사 기말 고사 출석 (20%) 중간 고사 (30%) 기말 고사 (40%) 실습 (10%) TOTAL
0409 39 20 59 21 20.0 17.7 6.3 10 54.0
1016 27 20 47 30 19.7 14.1 9 10 52.8
1234 5 20 25 3 18.3 7.5 0.9 10 36.7
3150 39 20 59 57 18.7 17.7 17.1 10 63.5
4917 22 20 42 24 20.0 12.6 7.2 10 49.8
7324 0 0 0 6.7 0 0 10 16.7
7325 0 20 20 4 15.7 6 1.2 10 32.9
7777 0 0 0 10.3 0 0 10 20.3
9492 15 20 35 42 18.7 10.5 12.6 10 51.8

SERIALIZATION

Person Serialization (Using BinaryFormatter or SoapFormatter)
http://dis.dankook.ac.kr/lectures/hci09/entry/Simple-Serialization

Person XML Serialization (Using XML Serializer or Soap XML Serializer)
http://dis.dankook.ac.kr/lectures/hci09/entry/XML-Serialization

Person Using ISerialable Interface
http://dis.dankook.ac.kr/lectures/hci09/entry/ISerialable

PersonList Serialization (Using BinaryFormatter or SoapFormatter)
http://dis.dankook.ac.kr/lectures/hci09/entry/PersonList-Serialization

HW4

단국대학교 멀티미디어공학과 HCI프로그래밍2 (2016년 가을학기) 실습

과목코드 : 300890

강사 : 박경신

———————————————————

날짜: 2016년 11월 28일

– 실습번호 : HW4 (Due by 12/12)

– 실습제목 : Window.Forms , Controls, FileIO, GMap.Net, LINQ

– 실습요약 : 지도 위에 한국의 지진 정보를 보여준다.

– 준비자료 : 지진데이터

Data

http://greatmaps.codeplex.com/releases/view/73162

 

12/12까지 online.dankook.ac.kr 이러닝으로 실행파일(bin\*.exe)과 소스코드(*.cs)와 보고서(*.doc/*.hwp)를 전부 “학번_이름_HW4.zip”으로 묶어서 제출한다. 또한, 비주얼 스튜디오에서 만든 프로젝트 전체 파일(*.sln, *.csproj)을 폴더에 같이 넣어준다. 보고서는 출력해서 수업시간에 제출한다.

 

– 실습문제

  1. GMap.Net 컨트롤을 설치한다.

http://www.independent-software.com/gmap-net-tutorial-maps-markers-and-polygons/

http://dis.dankook.ac.kr/lectures/hci16/2016/11/28/custom-control/ 참고

 

  1. KEarthquake 클래스를 만든다.

public class KEarthquake: IComparable<KEarthquake>, IEquatable<KEarthquake>

{

public DateTime Time { get; set; }

public double Magnitude { get; set; }

public double Latitutde { get; set; }

public double Longitude { get; set; }

public string Location { get; set; }

public string Link { get; set; }

public Color MagnitudeColor { get { return ComputeARGBColor(); } }

// compute color based on magnitude
public Color ComputeARGBColor()
{
int r = 0, g = 0, b = 0;
if (Magnitude <= 1.5)
{
// BLUE
r = 0; g = 0; b = 255;
}
else if ((Magnitude > 1.5) && (Magnitude <= 2.75))
{
// BLUE->CYAN
r = 0; g = (int)(255 * (Magnitude – 1.5) / 1.25); b = 255;
}
else if ((Magnitude > 2.75) && (Magnitude <= 4.0))
{
// CYAN->GREEN
r = 0; g = 255; b = 255 – (int)(255 * (Magnitude – 2.75) / 1.25);
}
else if ((Magnitude > 4.0) && (Magnitude <= 5.25))
{
// GREEN->YELLOW
r = (int)(255 * (Magnitude – 4.0) / 1.25); g = 255; b = 0;
}
else if ((Magnitude > 5.25) && (Magnitude <= 6.5))
{
// YELLOW->RED
r = 255; g = 255 – (int)(255 * (Magnitude – 5.25) / 1.25); b = 0;
}
else if (Magnitude > 6.5)
{
// RED
r = 255; g = 0; b = 0;
}
return Color.FromArgb(75, r, g, b);
}

}

 

  1. 모든 지진데이터 *.csv 파일을 읽어서 List<KEarthquake>를 만들어주는 KEarthquakeImporter 클래스를 만든다.

http://dis.dankook.ac.kr/lectures/hci15/?p=572 Person.csv 파일 읽기 참고

 

  1. List<KEarthquake>를 이용해서 Listview에 전체 데이터를 보여준다.

kearthquake_listview

  1. List<KEarthquake>를 이용해서 지진 강도(Magnitude)에 따른 색깔로 GMap.NET marker (circle polygon)을 그려준다.

class GMapMarkerCircle : GMapMarker // 제작 필요

class GMapMarkerImageAndLink : GMapMarker // 제작 필요

kearthquake_mapview

  1. LINQ를 이용하여 발생기간, 규모(Magnitude) 범위에 따른 지진데이터를 검색하여 보여준다.

Custom Control

사용자 정의 컨트롤
-기존 컨트롤을 상속받아 사용자 정의 새로운 컨트롤을 작성
-UserControl을 상속받아 합성 컨트롤을 작성

1. 파일 메뉴->새로 만들기->프로젝트
Visual C# 프로젝트 목록에서 “Windows Forms 컨트롤 라이브러리” 선택하고 이름을 “NumberTextBoxLib”을 입력
사용자 삽입 이미지

2. 솔루션 탐색기에서 UserControl1.cs를 NumberTextBox.cs로 변경
NumberTextBox.cs 코드에서 상속을 UserControl에서 TextBox로 변경
public partial class NumberTextBox: TextBox
NumberTextBox.Designer.cs에 InitializeComponent()에서 AutoScaleMode 속성은 삭제
NumberTextBox.cs 코드에서 OnKeyPress(…) 메소드를 재정의
솔루션을 빌드하면 컨트롤이 완성
완성
사용자 삽입 이미지

———————————————————————————————
사용자 정의 컨트롤 사용
1.솔루션 탐색기의 “참조”에 “NumberTextBoxLib.dll”를 “참조추가”
“도구상자”에서 오른쪽 마우스 “항목선택”을 한 후 “찾아보기” 버튼에서 “NumberTextBoxLib.dll” 다시 로딩한 후, “NumberTextBox” 에 체크가 됬는지 확인

사용자 삽입 이미지

사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지

2. 폼에 “NumberTextBox”를 사용하여 디자인하고 솔루션을 빌드하면 컨트롤이 완성