|
서정택 님이 쓰신 글 :
: 안녕하세요 BCB 6 초보 서정택 입니다.
: 지금 하나의 Panel에 Image 하나를 띄어놓고 그 이미지를 초마다 하나씩 위로 올릴려고 하는데
: Image가 하나만 올라가고 그 뒤로는 안올라 가네요
: 어떻게하면 Image 하나로 여러번 사용해서 올릴수 있을까요?
: 올라가는 시간은 3초 입니다.
: 답변 부탁드립니다.
이미지 스크롤을 말씀하시는 것으로 보입니다.
아래 소스를 참고하세요.
깜박임 문제도 해결해주어야 합니다.
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall FormPaint(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
void __fastcall WMEraseBkgnd(TWMEraseBkgnd& msg);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_ERASEBKGND,TWMEraseBkgnd,WMEraseBkgnd)
END_MESSAGE_MAP(TForm);
};
TForm1 *Form1;
Graphics::TBitmap *Bitmap1;
int StartY=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Bitmap1 = new Graphics::TBitmap;
Bitmap1->LoadFromFile("testbitmap.bmp");
Timer1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete Bitmap1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
BitBlt(
Canvas->Handle,
0,0,
Bitmap1->Width, Bitmap1->Height-StartY,
Bitmap1->Canvas->Handle,
0,StartY,
SRCCOPY
);
Canvas->FillRect(Rect(0,Bitmap1->Height-StartY,Width,Height));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Invalidate();
if(StartY+10<Bitmap1->Height) StartY += 10;
else StartY = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WMEraseBkgnd(TWMEraseBkgnd& msg)
{
msg.Result = 1;
}
//---------------------------------------------------------------------------
|