|
taeddy 님이 쓰신 글 :
: 안녕하세요...
:
: 생초보 빌더 사용자 입니다. ^^
:
: 다름이 아니라 프로그램을 짜다가 해결방법을 잘 몰라서 이렇게 올립니다.
:
: 우선 간단하게 프로그램이 어떻게 돌아가는지 말씀드리면
: 계산된 값(여기서는 xi_1 , yi_1 좌표값입니다. 그리고 이 좌표값은 실행시키면서 계속 변합니다.)
: 을 paintbox에 그래픽으로 출력하는 것입니다.
:
: 간단히 주요한 부분만 긁어서 올리겠습니다.
:
: //----------------------------------------------------------------------------------------//
:
: Graphics::TBitmap *trajectory1 = new Graphics::TBitmap;
:
: trajectory1 -> Height = Form1 -> PaintBox1 -> Height;
: trajectory1 -> Width = Form1 -> PaintBox1 -> Width;
:
: trajectory1 -> Canvas -> MoveTo(x1 , y1);
:
: if(z==0)
: {
: trajectory1 -> Canvas -> MoveTo(xi_1 , yi_1);
: } // close if(t)
:
: trajectory1 -> Canvas -> Pen -> Color = clRed;
: trajectory1 -> Canvas -> Pen -> Width = 1;
: trajectory1 -> Canvas -> LineTo(xi_1 , yi_1);
:
:
: Form1 -> PaintBox1 -> Canvas -> Draw (0,0,trajectory1);
:
: if (trajectory1) delete trajectory1;
:
: //-------------------------------------------------------------------------------------------------//
:
:
: 그런데 이러한 그림을 하나의 paintbox 안에서 여러개 그리고 동시에 그릴려고 합니다.
: (xi_1 , yi_1) 이 아닌 (x2_1 , yi_2) (xi_3 , yi_3) ......
:
: 어떻게 해야하는지.....
:
: 지금 이 프로그램에서는 thread object를 이용하여 코딩하고 있습니다.
:
:
:
:
: 워낙 생초보라 어디부터 손을 댈지를 몰라 이렇게 여러분께 도움을 부탁드리는 것입니다. ^^
: 빌더 고수님들의 많은 조언 부탁드리겠습니다.
재귀 호출 방법을 이용하시는것이 좋을것 같습니다. 어떻게 짜느냐에따라 어떤 방법이 좋고,
어떤 방법이 좋지 않다는 것이 갈려지는 것 같은데, 제가 보기에는 따로 객체를 만들어서
그리신 정도면, 화면에 뿌리는 속도가 좋아야 하는 프로그램 같습니다.
큐를 하나 만들어 두셔서, 그리는 위치 데이타를 계속 넣어 두신다음,
: trajectory1 -> Canvas -> MoveTo(x1 , y1);
:
: if(z==0)
: {
: trajectory1 -> Canvas -> MoveTo(xi_1 , yi_1);
: } // close if(t)
:
: trajectory1 -> Canvas -> Pen -> Color = clRed;
: trajectory1 -> Canvas -> Pen -> Width = 1;
: trajectory1 -> Canvas -> LineTo(xi_1 , yi_1);
이 부분에서 재귀 호출 (함수를 한번 더 호출) 을 하시면 객체 만들고, 지우는 시간까지
줄일 수 있습니다. 일단 다 그린 다음에 큐에 아무것도 없으면 출력을 하는 것이 되겠지요.
만약 재귀 호출을 하신다면, 객체를 만드시는 부분과, 그리는 부분을 따로 만들어 두셔야
합니다. 같은 함수에 객체를 정의 하는 부분이 있으면, 재귀 호출시에 에러가 날 테니깐요..
cheers!
cuperido.
|