Files
AccompanyCube/BackgroundForm.cpp
2026-06-13 00:10:11 +08:00

65 lines
1.7 KiB
C++

//---------------------------------------------------------------------------
#include <vcl.h>
#include <Vcl.Imaging.pngimage.hpp>
#pragma hdrstop
#include "BackgroundForm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
TPngImage *u_pImgCellTile = NULL;
__fastcall TBackgroundForm::TBackgroundForm(TComponent* AOwner)
: TForm(AOwner)
{
m_yLeftSide = -1;
if( !u_pImgCellTile ){
u_pImgCellTile = new TPngImage();
u_pImgCellTile->LoadFromResourceName(int(HInstance), L"PngBackTile");
}
}
//---------------------------------------------------------------------------
__fastcall TBackgroundForm::~TBackgroundForm()
{
if( u_pImgCellTile ){
delete u_pImgCellTile;
u_pImgCellTile = NULL;
}
}
//---------------------------------------------------------------------------
void __fastcall TBackgroundForm::WMEraseBkgnd(Winapi::Messages::TWMEraseBkgnd &Message)
{
if( u_pImgCellTile ){
TCanvas* tempCanvas = new TCanvas;
tempCanvas->Handle = Message.DC;
int nBottom = ClientHeight - u_pImgCellTile->Height;
//绘制面板上下部分
for (int i=0; i<2; i++){
int y = i==0 ? 0 : nBottom;
for (int x=0; x<ClientWidth; x+=u_pImgCellTile->Width){
tempCanvas->Draw( x, y, u_pImgCellTile );
}
}
if( m_yLeftSide>=0 ){ //ComposeForm列表框最小化时须填充左侧
for(int y=m_yLeftSide; y<nBottom; y+=u_pImgCellTile->Height ){
tempCanvas->Draw( 0, y, u_pImgCellTile );
}
}
delete tempCanvas;
Message.Result = true;
}
else{
DefaultHandler( &Message );
}
}
//---------------------------------------------------------------------------