如何在listview控件里显示背景图片,xiexie

解决方案 »

  1.   

    如何在ListView控件中绘底图
    --------------------------------------------------------------------------------
    重庆市巴南区 
    周剑峰 
    ---- ListView控件是Windows程序开发中的常用控件, 利用它可以把需要用户进行选择操作的多个项目在窗口中以列表的方式显示, 每一个项目可以有它的小图标和大图标, 从而可以改善程序的用户界面, 方便用户操作. ---- 为了使程序的界面更美观, 我们还可以在ListView控件中绘制底图, 正如我们可以为窗口绘制底图一样. 在Delphi中, 为ListView控件绘制底图是非常容易的, 它为我们提供有OnCustomDraw事件, 专门用于处理用户自定义的绘制, 在该事件中编写程序, 可以在绘制ListView的各个项目之前, 先执行该事件程序在ListView的画布(Canvas)上绘制我们自己的图形. ---- 下面是在ListView控件中绘底图的一个小程序, 其运行结果如下图所示(略) ---- 源程序如下: unit ListViewMain;
    interface
    uses
    Windows, Messages, SysUtils, Classes, Graphics,
    Controls, Forms, Dialogs,
    ComCtrls, ImgList;
    type
    TForm1 = class(TForm)
    ListView1: TListView;
    ImageList1: TImageList;
    procedure ListView1CustomDraw(Sender:
    TCustomListView;
    const ARect: TRect; var DefaultDraw:
    Boolean);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject;
    var Action: TCloseAction);
    private
    { Private declarations }
    public
    { Public declarations }
    end;
    var
    Form1: TForm1;
    Bitmap1: TBitmap;
    implementation
    {$R *.DFM}
    procedure TForm1.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;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Bitmap1 := TBitmap.Create;
    Bitmap1.LoadFromFile('backgray.bmp');
    end;
    procedure TForm1.FormClose(Sender: TObject;
    var Action: TCloseAction);
    begin
    Bitmap1.Free;
    end;end.
      

  2.   

    在ListView1CustomDraw中写代码
    关键代码为 ListView1.Canvas.Draw(X, Y, Bitmap);用Canvas来自己将位图画上去!