C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[51363] Re:DrawGrid로 파형 그리기 문의
장성호 [nasilso] 1475 읽음    2007-11-26 23:24
각 Column의 Width계산해서 하려면 머리아픕니다.

그냥 OnDrawCell이벤트에 넘어오는 Parameter를 잘이용하시면 됩니다.
void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
       //ACol은 현재 Draw할 Cell의 Column이구
      //ARow는 Row
     
      Rect는 (ACol , ARow)가 Draw될 화면상의 좌표입니다.
      만약 Grid가 Scroll되어있다면 그만큼 조정된 값으로 나옵니다.

      DrawGrid1->Canvas->TextRect(Rect,Rect.left+1,Rect.top+1,IntToStr(ACol)+" , "+IntToStr(ARow));
     //뭐 이런식으로요...
}
//---------------------------------------------------------------------------

그럼..



장준식 님이 쓰신 글 :
: 안녕하세요..
:
: 볼렌드 C++ 빌더 2주 사용자입니다.  역시나 초보 ㅋㅋ
:
: 지금 DrawGrid를 이용해서 신호를 그리는 프로그램을 작성하고 있습니다.
:
: 파형에 대한 정의를 입력하면 신호가 grid에 표시되는 건 어느 정도 됐습니다.
:
: 그런데 문제가 주기가 긴 신호를 표시할때 그리드의 폭이 좁으면 당연히 스크롤바를 이용해서 이동을 해야겠지요.
:
: DrawCell method가 셀별로 좌표를 잡다보니 문제가 좀 발생하네요..
:
: 그리드는 54개 행과 100개의 열로 구성이 되어있습니다. 한 열에 20포인트를 그리도록 되어 있구요.
: 따라서 총 2000포인트를 그리게 되어 있습니다. 한 화면에 보이는 그리드 포인트는 약 880 포인트 정도 되구요
: 스크롤바를 움직일때 마다 처음에는 0번 부터 880까지 보이게 하고 스클롤바를 오른쪽으로 당기면 20번 데이터부터 900번 데이터가 표시되도록 하고 싶습니다.
:
: 이부분 소스는 아래와 같습니다.
:
: if((ARow > 0 && ARow < 55) && ACol > 0){
:     for(int i = 0; i< 880;i++){
:        //GraphPointY는 Y 좌표 값들이 들어 있구요 이걸 DrawGrid에 맞게 변환을 해야겠죠.. pPointData가 Grid에 그려질 좌표값들입니다.
:        pPointData[ARow-1][i+columWidth*(ACol-1)].y = Rect.Bottom - GraphPointY[ARow-1][i+columWidth*(ACol-1)];
:       // X 좌표는 DrawGrid의 가장 왼쪽 좌표로 고정 시켜 놨구요 이게 LeftPoint 거기서부터 880 포인트까지 구성합니다.
:       pPointData[ARow-1][i+columWidth*(ACol-1)].x = LeftPoint + i;
:    }
:    이 데이터를 가지고 880 개의 데이터를 그립니다. 원래는 셀별로 들어가는 것만 그려야 하지만(20포인트) 렇게 하면 각 셀의 가장 오른쪽 그릴때 깨져서 부드럽지가 않은 관계로 그냥 880 포인트 한방에 다 그려버립니다. 이렇게 하니 깔끔하게 나오네요.
:    pPattenEditorCanvas->Polyline(&pPointData[ARow-1][(ACol-1)*columWidth], 880);
: }
: 여기서 문제는 마지막 라인의 Polyline에서 원하는 좌표만 그리고 싶은데 ACol이 계속 변하는 관계로 그래프가 엉망으로 나옵니다. 아시는 분은 무슨 말인지 아실겁니다. DrawCell의 특성상 그럴수 밖에 없죠.. 어떻게 좋은 방법 좀 있으면 조언 좀 부탁 드립니다.

+ -

관련 글 리스트
51355 DrawGrid로 파형 그리기 문의 장준식 2023 2007/11/26
51363     Re:DrawGrid로 파형 그리기 문의 장성호 1475 2007/11/26
51365         Re:Re:DrawGrid로 파형 그리기 문의 장준식 1161 2007/11/27
51368             Re:Re:Re:DrawGrid로 파형 그리기 문의 장성호 1399 2007/11/27
51367             자문자답하네요 ㅋㅋ 장준식 1093 2007/11/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.