ListView的每一个Item的类型是TListItem,这个类型带有句柄属性
建议你使用GetDC函数来获取每个Item的作图区,然后使用Canvas对象在目标上作图:关键代码如下:
const
PicFullName: String = 'C:\Startbmp';
procedure TForm1FormCreate(Sender: TObject);
begin
SelflvTstLargeImages := TImageListCreate(Application);
//设置ListView的LargetImage值,不使用用来装载,只是在vsIcon
//显示方式中给空位用
//依此类推:vsList显示模式显示Item就实例化一个SmallImages
end;
procedure TForm1BtnSetPicClick(Sender: TObject);//点击此按钮为当前被选中的Item设置
var
C: PChar;
Item: TListItem;
begin
if SelflvTstSelected = nil then Exit;
Item := SelflvTstSelected;
New(C);
GetMem(C,255);
StrPCopy(C,PicFullName);
if ItemData <> nil then
Dispose(ItemData);
ItemData := C;//在Item中的Data属性是一个指针,让它保存的路径
SelflvTstInvalidate;
end;
procedure TForm1FormClose(Sender: TObject; var Action: TCloseAction);
var
I: Integer;
begin
for I := 0 to SelflvTstItemsCount - 1 do
if SelflvTstItems[I]Data <> nil then
Dispose(SelflvTstItems[I]Data);//释放每一个指针
end;
procedure TForm1lvTstCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);//在ListView的OnCustomDraw事件中加入图形持久化代码
var
X,Y: Integer;
Cvs: TCanvas;
Bmp: TBitMap;
begin
Cvs := TCanvasCreate;
Bmp := TBitMapCreate;
if ItemData <> nil then
begin
CvsHandle := GetDC(ItemHandle);
BmpLoadFromFile(PChar(ItemData));
X := ItemPositionX;
Y := ItemPositionY;
CvsDraw(X,Y,BMP);//开始作图
end;
CvsFree;
BmpFree;
end;
end
欢迎分享,转载请注明来源:品搜搜测评网