標籤:pen 重寫 too www. .com height ali ras ken
核心思想:由於Windows表單每次都會重繪其表單背景,所以我們可以通過攔截表單重繪背景的訊息(WM_ERASEBKGND),並自訂方法來實現重繪表單背景。通過TImage組件也可以實現,但是重寫WM_ERASEBKGND訊息的效率更高一些,所以還是推薦使用這種方法。
(2)聲明重繪背景訊息響應函數
void fastcall OnWMEraseBkgnd(TWMEraseBkgnd& Msg);
(3)添加訊息映射
BEGIN_MESSAGE_MAP
//攔截重畫背景的事件
MESSAGE_HANDLER(WM_ERASEBKGND,TWMEraseBkgnd,OnWMEraseBkgnd);
END_MESSAGE_MAP(TForm);
(4)編寫自繪背景訊息響應函數的代碼
void fastcall TFormMain::OnWMEraseBkgnd(TWMEraseBkgnd& Msg)
{
//重畫背景
TCanvas* canvas = new TCanvas;
canvas->Handle = Msg.DC;
int cx = ClientWidth/bmpFormBK->Width + 1;
int cy = ClientHeight/bmpFormBK->Height + 1;
for (int i=0; i<cy; i++)
for (int j=0; j<cx; j++)
{
canvas->Draw(j*bmpFormBK->Width, i*bmpFormBK->Height,bmpFormBK); Msg.Result = true;
}
delete canvas;
}
http://www.cnblogs.com/songsu/articles/1336653.html
表單背景的繪製(Windows表單每次都會重繪其表單背景,所以我們可以通過攔截表單重繪背景的訊息(WM_ERASEBKGND),並自訂方法來實現重繪表單背景)