我的图标是32*32的,想在图标画在Listview的小图标中,小图标的大小是16*16,我用canvas.StrectDraw画,可是画出来的图标黑黑的,用canvas.draw画又没这个问题,可是图标只能画出一部分,请问这是什么原因,程序代码如下:
var i,j,l,k:integer;
m,r:Trect;
bmp:Tbitmap;
begin
defaultDraw := false;
m.Left := 3;
m.Top := item.Top+3;
m.Right := item.Left-3;
m.Bottom := item.Top + item.Left-3; r.Left := 3+m.Right;
r.Top := item.Top+1;
r.Bottom := item.Top + item.Left-1;
r.Right := r.Left+m.Left+m.Bottom-m.Top;
sender.Canvas.Font.Color := clblack;
sender.Canvas.Pen.Color := $00408000;
sender.Canvas.Brush.Style := bsClear;
sender.Canvas.Rectangle(m); if item.Checked then
begin
i := 5;
j := m.top+5;
sender.Canvas.Pen.Width := 1;
sender.Canvas.MoveTo(i,j);
sender.Canvas.Pen.Color := clred;
sender.Canvas.Pen.width := 2;
sender.Canvas.LineTo(i+3,m.Bottom-3);
sender.Canvas.LineTo(i+7,j-3);
sender.Canvas.Pen.Width := 1;
end ;
bmp := Tbitmap.Create;
bmp.LoadFromFile('newFace\3-1.bmp');
bmp.Transparent := true;
Bmp.TransparentColor := clTeal;
sender.Canvas.StretchDraw(r,bmp);
bmp.Free;
sender.Canvas.TextOut(r.Right+1,item.Top+1,item.Caption);
其中那张图片在qq中可以找到,请问为什么用strectDraw画有问题,看了帮助,帮助上说用CopyMode可以解决,可是又找不到解决方法,请高手指点!
var i,j,l,k:integer;
m,r:Trect;
bmp:Tbitmap;
begin
defaultDraw := false;
m.Left := 3;
m.Top := item.Top+3;
m.Right := item.Left-3;
m.Bottom := item.Top + item.Left-3; r.Left := 3+m.Right;
r.Top := item.Top+1;
r.Bottom := item.Top + item.Left-1;
r.Right := r.Left+m.Left+m.Bottom-m.Top;
sender.Canvas.Font.Color := clblack;
sender.Canvas.Pen.Color := $00408000;
sender.Canvas.Brush.Style := bsClear;
sender.Canvas.Rectangle(m); if item.Checked then
begin
i := 5;
j := m.top+5;
sender.Canvas.Pen.Width := 1;
sender.Canvas.MoveTo(i,j);
sender.Canvas.Pen.Color := clred;
sender.Canvas.Pen.width := 2;
sender.Canvas.LineTo(i+3,m.Bottom-3);
sender.Canvas.LineTo(i+7,j-3);
sender.Canvas.Pen.Width := 1;
end ;
bmp := Tbitmap.Create;
bmp.LoadFromFile('newFace\3-1.bmp');
bmp.Transparent := true;
Bmp.TransparentColor := clTeal;
sender.Canvas.StretchDraw(r,bmp);
bmp.Free;
sender.Canvas.TextOut(r.Right+1,item.Top+1,item.Caption);
其中那张图片在qq中可以找到,请问为什么用strectDraw画有问题,看了帮助,帮助上说用CopyMode可以解决,可是又找不到解决方法,请高手指点!
不行你再声明个bmp变量做中间层,之后用canvas.draw就可以了