回 帖 发 新 帖 刷新版面

主题:编程技巧:在ListView控件中绘底图

---- ListView控件是Windows程序开发中的常用控件利用它可以把需要用户进行选择操作的
多个项目在窗口中以列表的方式显示每一个项目可以有它的小图标和大图标从而可以改善
程序的用户界面方便用户操作.

---- 为了使程序的界面更美观

我们还可以在ListView控件中绘制底图正如我们可以为窗口绘制底图一样. 在Delphi中
为ListView控件绘制底图是非常容易的它为我们提供有OnCustomDraw事件专门用于处理
用户自定义的绘制在该事件中编写程序可以在绘制ListView的各个项目之前先执行该
事件程序在ListView的画布(Canvas)上绘制我们自己的图形.

---- 下面是在ListView控件中绘底图的一个小程序其运行结果如下图所示(略)

---- 源程序如下:
procedure TTestFrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Bitmap1.Free;
end;

procedure TTestFrm.FormCreate(Sender: TObject);
begin
  Bitmap1 := TBitmap.Create;
  Bitmap1.LoadFromFile('backgray.bmp');
end;

procedure TTestFrm.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
var
  x, y, w, h: LongInt;
begin
  with Bitmap1 do
  begin
    W := Width;
    H := Height;
  end;
  Y := 0;
  while Y < Height do
  begin
    X := 0;
    while X < Width do begin
    ListView1.Canvas.Draw(X, Y, Bitmap1);
    Inc(X, W);
  end;
  Inc(Y, H);
end;
end;

回复列表 (共3个回复)

沙发

刀剑如梦兄
   我学Delphi不久,才两个星期。对于你的这段程序,我想问几个问题:
1、Bitmap1 不声明为TBitmap,可以直接创建吗?
2、如果控件动态调整,平铺图片是否有效,所产生的抖动情况会怎样?

板凳

应该是要声明一下!

3 楼

晕~! 代码看起来很简单,但连个界面图都没。连哪些控件都不知道。叫别人怎么理解你的精髓~~~~~~~!

我来回复

您尚未登录,请登录后再回复。点此登录或注册