procedure TfrmMain.lbLanmuDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);begin with Control as TListBox do begin Canvas.FillRect(Rect); ilType.Draw(Canvas,Rect.Left,Rect.Top+2,index+1); //绘图,ilType-TImageList Canvas.TextOut(Rect.Left+ilType.Width+4,Rect.Top+8,Items.Strings[index]); end; end
假设我已经把ico放在了imagelist中了呢?
先将ListBox的Style属性设为lbOwnerDrawFixedprocedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var AColor: TColor; begin with TListBox(Control) do begin Canvas.Brush.Color := Color; Canvas.Brush.Style := bsSolid; Canvas.FillRect(Rect); ImageList1.Draw(Canvas, Rect.Left, Rect.Top, 0); AColor := ColorToRgb(Color) xor $FFFFFF; Canvas.Font.Color := AColor; Canvas.TextOut(ImageList1.Width + 2, Rect.Top, Items[Index]); end; end;
Rect: TRect; State: TOwnerDrawState);begin
with Control as TListBox do begin
Canvas.FillRect(Rect);
ilType.Draw(Canvas,Rect.Left,Rect.Top+2,index+1); //绘图,ilType-TImageList
Canvas.TextOut(Rect.Left+ilType.Width+4,Rect.Top+8,Items.Strings[index]);
end;
end
Rect: TRect; State: TOwnerDrawState);
var
AColor: TColor;
begin
with TListBox(Control) do
begin
Canvas.Brush.Color := Color;
Canvas.Brush.Style := bsSolid;
Canvas.FillRect(Rect);
ImageList1.Draw(Canvas, Rect.Left, Rect.Top, 0);
AColor := ColorToRgb(Color) xor $FFFFFF;
Canvas.Font.Color := AColor;
Canvas.TextOut(ImageList1.Width + 2, Rect.Top, Items[Index]);
end;
end;