퇴근5분전

 이 프로그램은 수성정보통신에 처음 입사했을 당시 계시던 부장님이 DB 프로시져에 HTML코드를 직접 넣어 뿌리다보니 HTML 태그가 안맞아서 오류가 많이 생겨서 그걸 정리하기 위해 만들어 드렸던 프로그램임.

 이때는 정규식도 모를때고 한참 알고리즘 공부할때라서..
HTML파싱을 좀 독특하게 했음. 그래프 알고리즘을 적용해서 만들었음. 참 특이했던 것임.

  에피소드 : DB만 하실줄 아시던 부장님이 웹프로그래머가 DB 데이타를 받아서 다시 그걸 테이블태그를 붙여서 플래이스홀더 컨트롤에 바인딩 하는것을 보고 DB에서 다 해줄테니 그냥 붙여넣으라고 했다는... 웹프로그래머는 asp.net 1년차 였음. 나역시 윈폼1년하고 웹폼을 배워보고자 들어가서 보았을때 첨엔 asp.net은 그렇게 작업하는줄 알았음...


사용자 삽입 이미지
* 정렬 후 긴 소스같은경우 해당 위치를 보기 위해 빨간선으로 위치를 알수 있도록 표시


ps : 다 구현하고 프로젝트 끝나갈 무렵 vs2005에 보니 정렬기능이 있더라눈... 쿨럭!

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

테트리스  (0) 2009.05.02
아날로그 시계  (0) 2009.05.02
FND를 이용한 디지탈 시계  (0) 2009.05.02
FND( SevenSegment )  (0) 2009.05.02
데이타베이스 브라우져 ver2  (0) 2009.05.02

앞서 설명한 FND를 컨트롤로 만들어두었던것을
이용해서 시계를 만들었음.

사용자 삽입 이미지

다시봐도 나름 잘 만들었넹...

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

아날로그 시계  (0) 2009.05.02
HTML 자동 정렬 프로그램  (0) 2009.05.02
FND( SevenSegment )  (0) 2009.05.02
데이타베이스 브라우져 ver2  (0) 2009.05.02
처음 만든 이미지 뷰어  (0) 2009.05.02

사용자 삽입 이미지

<< FND >>


FND는 LED를 위와같이 배열하여 하나의 디스플레이 소자로써 숫자나 영문 표시를 한다.

실제 부품 핀 번호를 위에 A~ G까지 써놓았고 여기에 Com 단자와 Dot표시 Led가 존재한다.

다만 프로그래밍에서 제외시켰음.


이 프로그래밍은 C#을 막 시작해서 5달째쯤 되어 시간이 좀 되던중에 디지탈 숫자 표시에 관련된
얘기를 듣고 마침 객체지향에 대해 막 궁금해 하던 시절에 이걸 만들었었다. 아 ~ 옛날이여~~

 내가 전자과라서 전자 부품은 거의 모두 알고 있었던 시절이었으니 부품에 대해 그리 사전조사가 필요없었고. 당시 객체 지향에 맞는 코드를 만들어보고자 위 FND를 설계후 디지탈 시계를 만들었었음.


    /// <summary>
    /// fillup: 채우다,
    /// BackColor : 바탕색,
    /// UserColor : 사용자 정의색
    /// </summary>
    enum FillUp {BacKColor,UserColor};
    enum SegmentArray {a,b,c,d,e,f,g};


//핀 번호와 Led 표시상태를 구분짓는 값이다. Led가 On, Off되면서 숫자가 표시되므로
이 값을 위처럼 구분짓는다.

        /// <summary>
        /// 모서리 옵셋값
        /// </summary>
        float angleoffsetvalue = 9f;
        public float AngleOffsetValue
        {
            get { return angleoffsetvalue;  }
            set { angleoffsetvalue = value;
            CVPointSegments.Calculat(this.Size, angleoffsetvalue, thinkness);
            }
        }

// 이것은 Led 하나의 다각형 그림을 그릴때 그 모서리를 뽀족하게 할것인지 말것인지를 결정하는 값이다.

  /// <summary>
        /// 세그먼트 두께 값.
        /// </summary>
        float thinkness = 7f;
        public float SegmentThinkness
        {
            get { return thinkness;  }
            set { thinkness = value;
            CVPointSegments.Calculat(this.Size, angleoffsetvalue, thinkness);
            }
        }

// 이것은 세그먼트 표시되는 Led표시부의 두께 값이다.

        /// <summary>
        /// 외곽선 유무 기본값 : true
        /// </summary>
        Boolean  displayouterwall = true;
        public Boolean DisplayOuterWall
        {
            get {return displayouterwall;  }
            set {displayouterwall = value; }
        }
// 이것은 표시될때 Led의 외곽선 표시임.

        /// <summary>
        /// 디스플레이~~!! 될 번호... 숫자 0~ 9 가운데...
        /// </summary>
        int displayIndex = 0;
        public int DisplayNumber
        {
            get { return displayIndex;  }
            set {
                    displayIndex = value % 10;
                }
        }
// 표시될 숫자

        /// <summary>
        /// Segment 컬러.
        /// </summary>
        Color   usercolor = Color.Red;
        public Color UserColor{
            get {return usercolor;}
            set {usercolor  = value;}
        }
// Led 색상이 되겠다.

        string[][] DisplayNumbers = new string[10][]
            {
                 new string[] {"a","b","c","d","e","f"}, // 0
                 new string[] {"b","c"}, // 1
                 new string[] {"a","b","g","d","e"}, // 2
                 new string[] {"a","b","c","d","g"}, // 3
                 new string[] {"b","c","g","f"}, // 4
                 new string[] {"a","f","g","c","d"}, // 5
                 new string[] {"a","f","g","c","d","e"}, // 6
                 new string[] {"a","b","c"}, // 7
                 new string[] {"a","b","c","d","e","f","g"}, // 8
                 new string[] {"a","b","c","d","g","f"} // 9
            };

위 표시는 숫자값에 따른 켜질 Led다!

위에만 봐도 FND의 실제 동작을 가늠할 수 있지 아니한가?

위에는 동작관련된것이고.

아래는 세그먼트 표시관련된 것.


            //                                                      |offset|
            //                  sp2******************sp3
            //         sp1******************************sp4         <== 세그먼트 1개
            //                  sp6******************sp5
            //    halfhinkness : 두께의 절반.
            //
이것이 기본 컨셉이었다!!
오~~ 그땐 그래도 머리가 잘 돌았나부다. 하하하!!

사용자 삽입 이미지

<< 외곽선 사용여부 >>


사용자 삽입 이미지

<< FND 색 변경 >>



사용자 삽입 이미지

<< AngleOffSet 값 변경 >>

실제 존재하는 부품 동작 그대로를 프로그래밍 해보았음.



 

'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글

HTML 자동 정렬 프로그램  (0) 2009.05.02
FND를 이용한 디지탈 시계  (0) 2009.05.02
데이타베이스 브라우져 ver2  (0) 2009.05.02
처음 만든 이미지 뷰어  (0) 2009.05.02
폼간 데이타 전달  (0) 2009.05.02