J
jinzuo007
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
你们好!小弟想实现图象列表框。在listbox的drawitem事件中处理如下:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Bitmap: TBitmap;
Offset: Integer;
ind : integer;
begin
ind := index +1;
with (Control as TListBox).Canvas do
begin
FillRect(Rect);
Offset := 2;
Bitmap := TBitmap.create;
Bitmap.LoadFromFile(GetCurrentDir+'/newface/'+inttostr(ind) +'-1.bmp');
BrushCopy(Bounds(Rect.Left + 4, Rect.Top,
Bitmap.Width, Bitmap.Height),
Bitmap, Bounds(0, 0, Bitmap.Width,
Bitmap.Height), bitmap.Canvas.Brush.Color );
end;
end;
//在窗体上添加一个按钮,在单击事件中给listbox添加项目。
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i : integer;
begin
listbox1.Visible := True;
for i:= 1 to 5 do
begin
listbox1.AddItem(inttostr(i)+'-1',self);
end;
end;
在此,图象已经画出来了。可惜!背景却不是透明的:([!] 而且在选中某个item时
获得焦点的兰色会覆盖一部分图象的颜色,所以效果非常差(您可以自己将oicq路径下
的‘newface’目录考到程序目录下运行,其悲惨一看即知!)
小弟想请问如何能使图象成为透明的,而且必须是画上去的,不能用image
控件一副副的load, 还请各位大虾指教,小弟感激不胜!!
你们好!小弟想实现图象列表框。在listbox的drawitem事件中处理如下:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Bitmap: TBitmap;
Offset: Integer;
ind : integer;
begin
ind := index +1;
with (Control as TListBox).Canvas do
begin
FillRect(Rect);
Offset := 2;
Bitmap := TBitmap.create;
Bitmap.LoadFromFile(GetCurrentDir+'/newface/'+inttostr(ind) +'-1.bmp');
BrushCopy(Bounds(Rect.Left + 4, Rect.Top,
Bitmap.Width, Bitmap.Height),
Bitmap, Bounds(0, 0, Bitmap.Width,
Bitmap.Height), bitmap.Canvas.Brush.Color );
end;
end;
//在窗体上添加一个按钮,在单击事件中给listbox添加项目。
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i : integer;
begin
listbox1.Visible := True;
for i:= 1 to 5 do
begin
listbox1.AddItem(inttostr(i)+'-1',self);
end;
end;
在此,图象已经画出来了。可惜!背景却不是透明的:([!] 而且在选中某个item时
获得焦点的兰色会覆盖一部分图象的颜色,所以效果非常差(您可以自己将oicq路径下
的‘newface’目录考到程序目录下运行,其悲惨一看即知!)
小弟想请问如何能使图象成为透明的,而且必须是画上去的,不能用image
控件一副副的load, 还请各位大虾指教,小弟感激不胜!!