如题,我在一个按钮Button1上画了个图片,没问题,但是为什么一按鼠标图片就消失了?
procedure TForm1.Button2Click(Sender: TObject);
var
cas:Tcanvas;
bmp:Tbitmap;
begin
bmp:=Tbitmap.Create;
bmp.LoadFromFile('d:\0.bmp');
cas:=Tcanvas.Create;
cas.Handle :=Getdc(Button1.Handle);
cas.StretchDraw(Button1.ClientRect,bmp);
cas.Textout(Button1.Width div 2 -2,Button1.Height div 2-2,Button1.Caption);
bmp.Free;
cas.Free;
end;
我也想研究研究BitBtn的代码,不过水平太低,有点不大懂。请问我应该重载什么函数,或者截获什么事件,以便重画图片么?多谢!
procedure TForm1.Button2Click(Sender: TObject);
var
cas:Tcanvas;
bmp:Tbitmap;
begin
bmp:=Tbitmap.Create;
bmp.LoadFromFile('d:\0.bmp');
cas:=Tcanvas.Create;
cas.Handle :=Getdc(Button1.Handle);
cas.StretchDraw(Button1.ClientRect,bmp);
cas.Textout(Button1.Width div 2 -2,Button1.Height div 2-2,Button1.Caption);
bmp.Free;
cas.Free;
end;
我也想研究研究BitBtn的代码,不过水平太低,有点不大懂。请问我应该重载什么函数,或者截获什么事件,以便重画图片么?多谢!
解决方案 »
- OLEDB.4.0 连接dbf 数据库,生成数据库字段宽度与实际不符,这是为什么
- 请问用DBEdit1控件如何录入数据?
- ...............................散
- 一个很奇怪的jpg 文件从库中取出的显示的问题,不知道其他朋友是否碰到过。
- 各位大虾:Help Me! 怎样在web页面中调用普通窗体?(急!在线等)
- 数组转换为集合(有没直接的函数)
- POP3邮件接收问题!!!
- <<<<<相信pop高手肯定遇到过这个问题。
- 有人知道这个效果是怎么实现的吗
- Delphi中如何实现不规则区域的鼠标点击响应?
- 在TClientSocket中,怎么判断所连接的TServerSocket是可用的?
- 请问在delphi6里面怎么生成exe文件才能在所有的机器上运行!
我现在郁闷的是,我的控件根本不响应WMPAINT!!:(
begin
inherited;
PaintBitmap;//我自己的绘图函数
end;
begin
// inherited;
PaintBitmap;//我自己的绘图函数
PaintText; //添加画文字
end;
begin
inherited CreateParams(Params);
with Params do Style := Style or BS_OWNERDRAW;
end;
begin
with Message.MeasureItemStruct^ do
begin
itemWidth := Width;
itemHeight := Height;
end;
end;procedure TImageButton.CNDrawItem(var Message: TWMDrawItem);
var
SaveIndex: Integer;
begin
with Message.DrawItemStruct^ do
begin
SaveIndex := SaveDC(hDC);
FCanvas.Lock;
try
FCanvas.Handle := hDC;
FCanvas.Font := Font;
FCanvas.Brush := Brush;
DrawButton(rcItem, itemState);
finally
FCanvas.Handle := 0;
FCanvas.Unlock;
RestoreDC(hDC, SaveIndex);
end;
end;
Message.Result := 1;
end;