|
임펠리테리입니다.
이미지에 점찍는 동작이 너무 바빠서 그 동안에는 페인트 메시지를 처리해주지 못해서 그렇습니다.
루프 안에 Application->ProcessMessages();를 추가하시면 됩니다.
for ( int x = 0; x < 640; x++ )
for ( int y = 0; y < 480; y++ )
{
Image->Canvas->Pixels[x][y] = clRed;
Application->ProcessMessages();
}
그럼 참고하시길...
오상현 님이 쓰신 글 :
: TImage *Image;
:
: void __fastcall TFormMain::Timer1Timer(TObject *Sender)
: {
: static int x = 0, y = 0;
:
: Image->Canvas->Pixels[x][y] = clRed;
: x++;
: if ( x > 640 )
: {
: x = 0;
: y ++;
: }
:
: if ( y > 480 )
: {
: x = y = 0;
: Timer1->Enabled = false;
: }
: }
: 요런식으로 처리하면 640*480범위만큼 점이 하나씩 찍히는게 보입니다.
: 근데 ....
: //---------------------------------------------------------------------------
: void __fastcall TFormMain::Button1Click(TObject *Sender)
: {
: for ( int x = 0; x < 640; x++ )
: for ( int y = 0; y < 480; y++ )
: Image->Canvas->Pixels[x][y] = clRed;
: }
:
: 요런 방식으로 처리하면 점이 찍히는 과정이 안보이구 찍힌 결과
: 가 한번에 나오거든여. 물론 중간에 Update나 Refresh()등을 사용해도
: 마찬가지였습니다.
:
: 제가 원하는것은
: Button1Click에 있는 구조로 코딩한뒤
: Timer에서 했던 결과처럼 점이 하나씩 찍히는것을 보여주길
: 바라는 것입니다.
:
: c++ Builder의 고수님들의 조언 바랍니다~
: 그럼 즐거운 하루되세엽.
:
|