我们知道可以使用Listview这个控件进行图片
显示.但在显示出来的图片上用鼠标点击它,图片就会
被覆盖上一层蒙蒙的蓝色,而导致整个图片变得模糊.
给人十分不爽的感觉.但我努力去找这个答案都是无功
而劳.所以来这里求解!
不要告诉我用 item.select := False;
或者别的把item的焦点杀死,这是不可取的.
因为我还要对它进行处理. 我只是想把覆盖
在图片上的颜色去掉就可以! 谢谢拉.
显示.但在显示出来的图片上用鼠标点击它,图片就会
被覆盖上一层蒙蒙的蓝色,而导致整个图片变得模糊.
给人十分不爽的感觉.但我努力去找这个答案都是无功
而劳.所以来这里求解!
不要告诉我用 item.select := False;
或者别的把item的焦点杀死,这是不可取的.
因为我还要对它进行处理. 我只是想把覆盖
在图片上的颜色去掉就可以! 谢谢拉.
解决方案 »
- 想做外挂,高手进来指点一下
- 请教一些学习Delphi的方法和技巧.
- 如何判断点击用webbrowser显示的网页中的连接的url是什么?
- 关于animatewindow()的使用
- 一个客户与服务器间的问题
- 为什么我的dbgrid不能显示负值?
- 我想装WIN2000服务器版,大家说用什么杀毒软件比较好?
- 用delphi开发工厂程序,求合作伙伴
- 见鬼了!!我的WIN2000的riched32.dll只有4K.复制一个正常的替换后,自己立刻就变成4k!晕呀!!在线给分!!
- 请问对于像FOXMAIL这样的使用自己做的数据库的,怎么做个自己的数据库?
- 一个TQuery的问题
- 关于XP中Delphi5的问题
我就想把它的去掉,然后等用户选中之后,我再自己画上去.
表示用户已经选中了. CreateParams 到底是那个参数??
MyNode.SelectedIndex := 2;//当点中后改变图象
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if State = cdsSelected then
begin
{选中时}
end
else
begin
end;
end;
if cdsSelected in State then
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
bmp: TBitmap;
begin
if cdsSelected in State then
begin
bmp := TBitmap.Create;
try
ImageList1.GetBitmap(0, bmp);
Sender.Canvas.StretchDraw(Rect(20,10, bmp.Width, bmp.Height), bmp);
finally
bmp.Free;
end;
end;
end;
TO: xzhifei(星级饭桶(抵制日货)·飞)
你说的重画是不是这个意思, 但还是达不到我的效果呢?
而且Sender.Canvas.StretchDraw(Rect(20,10, bmp.Width, bmp.Height), bmp);
在这句里面的Left和Top又怎么能得到原来的值,在重画的时候,才能完全覆盖!
procedure TForm1.ProgressBarLV1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
aRect:TRect;
begin
aRect:=Item.DisplayRect(drBounds );
if cdsSelected in State then
begin
bmp := TBitmap.Create;
try
ImageList1.GetBitmap(0, bmp);
Sender.Canvas.StretchDraw(Rect(aRect.Left ,aRect.Top , bmp.Width, bmp.Height), bmp);
finally
bmp.Free;
end;
end;end;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
aRect: TRect;
bmp: TBitmap;
begin
aRect := Item.DisplayRect(drBounds);
if cdsSelected in State then
begin
//cdsFocused 还可以分别处理是激活状态时的图象
DefaultDraw := False; //加上这一句就可以了
bmp := TBitmap.Create;
try
ImageList1.GetBitmap(0, bmp);
Sender.Canvas.StretchDraw(Rect(aRect.Left, aRect.Top, bmp.Width, bmp.Height), bmp);
finally
bmp.Free;
end;
end;
end;
有机会请你喝酒! :)