질문 내용이 좀 길지만 끝까지 읽어주십시요.
오실로스코프처럼 사운드카드의 음성 wave입력신호를 화면에
실시간으로 그려주려고 합니다.
그런데...
repeat
1. 새로운 입력신호가 원하는 양만큼 쌓일때까지 기다립니다.
2. 전에그렸던 파형을 지웁니다.
3. 격자 라인을 다시 그립니다.
4. 새로운 입력신호를 그립니다.
until false;
를 반복하니까 제가 원하던데로 되긴되는데
화면이 계속 깜빡거립니다.
그래서 편법으로 Image Component 2개를 같은size로 겹치게놓고
둘중에 하나를(아무거나 여기서는 Image1으로 합니다) 화면에서
않보이게 Visible 옵션을 false로하면 Image2만 화면에보이게 됩니다.
이제 위의 (1.2.3.4.)를 Image1에 실행하면 제가원하던데로 화면에
아무런 반응이 없습니다.
그리고
5. Image1의 화면을 Image2로 Copy하면
{ Image2.Canvas.Draw( 0, 0, form1.Image1.Picture.Bitmap ); 이나
Image2.Canvas.CopyRect(Image1.ClientRect,Image1.Canvas,Image1.ClientRect); }
식으로 하면
(1.2.3.4)의 실행 결과가 눈으로 보입니다.
그런데 (1.2.3.4.)는 TImage 가 아닌 TLabel 이나 그냥 폼위에
Canvas.Line(x,y) 이런식으로 했을때는 잘되었는데
질문1). (5.)때문에 (1.2.3.4.)를 TImage로 바꾸고 살행하니까 프로그램이 죽어요.
확실치는 않치만 원인은 waveIn CallBack 함수내에서 (1.2.3.4.5)를 호출해서
그런줄알고 (1.2.3.4.5)를 Thread 함수내 에서 호출하니까 되기는되는데
꼭 이래야만하는지???...
왜그런지???...
질문2). TLabel이나 폼에 그릴때는 좀 깜빡거리기는 해도 빠르게 화면이 바뀌었는데
TImage로 바꾸니까 너무느려졌어요.
왜이런지???...
질문3). game제작기법 중에 2장의 레이어를 교대로 보여주면서 화면을 그려주는방법이
있다는 것을 이론적으로만알고 있는데 델파이에서는 어떻게 하는지...)
( 되도록이면 DirectX를 않쓰고)
질문4). 제 질문이 좀 귀찮으면 위의 스코프 예제 소스가 올라와있는 인터넷 사이트 라도..
** 여기까지 제 질문 끝입니다
위질문중 하나라도 가르쳐주세요.
이것 때문에 현제 몇일 밤을 샜습니다. 워낙 실력이 딸린 초보라서...
부탁인데 제발 저좀 잘수있게 도와주세요!!!
|