Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8304642
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类: C/C++

2006-12-14 22:44:03

注:这里除了给Listview加背景外,而且图标实现了透明效果.
在delphi中我们可以这样实现:
procedure   TForm1.ListView1CustomDraw(Sender:   TCustomListView;  
                  const   ARect:   TRect;   var   DefaultDraw:   Boolean);  
              var  
                  Bitmap   :   TBitMap;  
              begin  
                      Bitmap   :=   TBitmap.Create;  
                      Bitmap.LoadFromFile('back.bmp');  
                      ListView1.Canvas.Draw(0,0,Bitmap);  
                      ListView1.Color:=clNone;  
                      SetBkMode(Listview1.Canvas.Handle,TRANSPARENT);//就这里了  
                      listview1.Perform(LVM_SETTEXTBKCOLOR,0,LongInt(CLR_NONE));  
                      ListView_SetBKColor(ListView1.Handle,CLR_NONE);  
              end;  
这是另一段代码:
uses   CommCtrl;  
   
  procedure   TForm1.ListView1CustomDraw(Sender:   TCustomListView;  
      const   ARect:   TRect;   var   DefaultDraw:   Boolean);  
  begin  
      TListView(Sender).Canvas.Draw(0,   0,   Image1.Picture.Graphic);  
   
      SetBkMode(TListView(Sender).Canvas.Handle,   TRANSPARENT);  
      TListView(Sender).Perform(LVM_SETTEXTBKCOLOR,   0,   LongInt(CLR_NONE));  
      ListView_SetBKColor(TListView(Sender).Handle,   CLR_NONE);  
当然这样也可以:
procedure   TForm1.ListView1CustomDraw(Sender:   TCustomListView;  
      const   ARect:   TRect;   var   DefaultDraw:   Boolean);  
  var  
        x,y:   LongInt;  
  begin  
      x   :=   self.Width   -   bitmap1.Width;  
      y   :=   self.Height   -   bitmap1.Height;  
      self.Caption   :=   inttostr(form1.Width)   +   ','   +   inttostr(x);  
      listview1.Canvas.Draw(x,   y,   bitmap1);  
      SetBkMode(listview1.Canvas.Handle,TRANSPARENT);  
      ListView_SetTextBKColor(listview1.Handle,CLR_NONE);  
  end;  
在C++Builder中我们可以这样写:
void __fastcall TfrmMain::ListView1CustomDraw(TCustomListView *Sender,
      const TRect &ARect, bool &DefaultDraw)
{
    AnsiString strPath;
    strPath=ExtractFilePath(Application->ExeName);
    Graphics::TBitmap * bmp=new Graphics::TBitmap();
    bmp->LoadFromFile(strPath+"bk.bmp");
    ListView1->Canvas->Draw(0,0,bmp);
    ListView1->Color=clNone;
    SetBkMode(ListView1->Canvas->Handle,TRANSPARENT);
    Sender->Perform(LVM_SETTEXTBKCOLOR,0,long(CLR_NONE));
    ListView_SetBkColor(Sender->Handle,CLR_NONE);
}
阅读(2321) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~