怎样给Panel加上背景图片?(100分)

  • 主题发起人 主题发起人 sleepy
  • 开始时间 开始时间
S

sleepy

Unregistered / Unconfirmed
GUEST, unregistred user!
想用一行大师的Brush.bitmap的方法,但是一闪就没了。
请问有什么好办法吗?
 
将一行大师方法放在paint事件里.
 
panel是没有onpaint的呀,而且放在form的onpaint也是不行的。
 
使用Image在Panel上显示一背景图片。
 
如果要在StringGrid加上背景图片呢?
 
>>如果要在StringGrid加上背景图片呢?
又回到老问题了,查以前的贴子.
 
我找不到, 请问URL =?
 
用image有时会有align的问题。还是用canvas吧
var mycanvas:tcanvas;
bit:TBitmap;
begin
mycanvas:=TCanvas.Create;
mycanvas.Handle:=getdc( Panel1.Handle);
bit:=TBitmap.Create;
//这几步你可以随便了,这里放了一个图
bit.LoadFromFile('c:/windows/clouds.bmp');
mycanvas.StretchDraw(rect(0,0,Panel1.Width,Panel1.Height),bit);
mycanvas.Free;
//一定记得释放
end;
 
用brush.bitmap可以, 不过得截掉WM_ERASEBKGND消息.
所以最好继承TPanel做个控件.
在TPanel外面改很麻烦. 要用SetWindowLong修改掉Panel原来的wndproc,
替换成你的处理过程:
if Message.Msg = WM_ERASEBKGND then
Message.result := 1
else

Message.result := CallWindowProc(原来的wndproc, panel.handle, Message.Msg, Message.WParam, Message.LParam);
 
menxin的方法很好.
 
用Brush.Bitmap不行,还是直接在TPanel的Canvas上Draw比较好。
 
多人接受答案了。
 
后退
顶部