ListBox自绘,列表显示一系列图片

简介:
     最近本人做的项目中,需要将一系列图片列表显示到一个ListBox中,本人使用的raize套件中的RzListBox,这里讲的方法同样适用于这两种组件,首先设置ListBox的style为:lbOwnerDrawVariable,然后处理ListBox的MeasureItem与DrawItem事件。

      代码如下:
procedure TFrameAuction.RzListBoxMeasureItem(Control: TWinControl;
  Index: Integer; var Height: Integer);
begin
  Height:
= 82 ;//设置item的高度
end;

procedure TFrameAuction.RzListBoxDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  jpeg:TJPEGImage;
  bmp:TBitMap;
  root,cnode: IXMLNode;
  icon: TIcon;
  fname:
string ;
begin
  root:
= self.FXMLDoc.DocumentElement;
  cnode:
= root.ChildNodes[Index];
  with (Control 
as  TRzListBox).Canvas  do  begin
    bmp:
= TBitmap.Create;
    jpeg:
= TJPEGImage.Create;
    
if  cnode.GetAttribute( ' photo ' ) = ''  then begin
      fname:
= ExtractFilePath(Application.ExeName) + ' images\none.jpg ' ;
    end 
else  begin
      fname:
= ExtractFilePath(Application.ExeName) + ' images\ ' + root.GetAttribute( ' id ' ) + ' - ' + cnode.GetAttribute( ' photoid ' ) + ' - ' + cnode.GetAttribute( ' photo ' );
      
if  not FileExists(fname) then
        fname:
= ExtractFilePath(Application.ExeName) + ' images\none.jpg ' ;
    end;
    jpeg.LoadFromFile(fname);
    with bmp 
do
    begin
      PixelFormat:
= pf24bit;
      Height:
= 60 ;
      Width:
= self.RzListBox.Width;
      Canvas.Brush.Color:
= $00F0EDE6;
      Canvas.FillRect(Canvas.ClipRect);
      Canvas.StretchDraw(Bounds(
0 , 0 , 80 , 60 ), jpeg);
    end;

    FillRect(Rect);
    Draw(Rect.Left
+ 1 , Rect.Top  +   1 ,bmp);
    icon:
= TIcon.Create;
    
if  cnode.GetAttribute( ' status ' ) = ' 1 '  then
      self.ImageListStatus.GetIcon(
8 ,icon)
    
else   if  cnode.GetAttribute( ' status ' ) = ' 3 '  then
      self.ImageListStatus.GetIcon(
2 ,icon)
    
else   if  cnode.GetAttribute( ' status ' ) = ' 2 '  then begin
      
if  cnode.GetAttribute( ' bargainflag ' ) = ' 0 '  then
        self.ImageListStatus.GetIcon(
6 ,icon)
      
else
        self.ImageListStatus.GetIcon(
4 ,icon)
    end 
else   if  cnode.GetAttribute( ' status ' ) = ' 0 '  then begin
      
if  root.GetAttribute( ' activeitem ' ) = cnode.GetAttribute( ' itemid ' ) then
         self.ImageListStatus.GetIcon(
0 ,icon);
    end;

    Draw(Rect.Left
+ 1 + 80 + 5 ,Rect.Top + 22 ,icon);
    TextOut(
1 ,Rect.Top + 64 ,cnode.GetAttribute( ' no ' ) + ' 号: ' + cnode.GetAttribute( ' itemtitle ' ));
  end;
  icon.Free;
  bmp.Free;
  jpeg.Free;
end;

运行结果如下:






    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/07/28/834873.html,如需转载请自行联系原作者

相关文章
|
7月前
|
前端开发 JavaScript
Elementplus如何使面包屑往左边移动,右边头像下拉菜单如何写,下拉菜单如何靠中一点,下拉菜单出现文字不对齐怎么办,如何设置鼠标样式,如何使用阿里妈妈icon,如何点击icon全屏
Elementplus如何使面包屑往左边移动,右边头像下拉菜单如何写,下拉菜单如何靠中一点,下拉菜单出现文字不对齐怎么办,如何设置鼠标样式,如何使用阿里妈妈icon,如何点击icon全屏
Elementplus如何使面包屑往左边移动,右边头像下拉菜单如何写,下拉菜单如何靠中一点,下拉菜单出现文字不对齐怎么办,如何设置鼠标样式,如何使用阿里妈妈icon,如何点击icon全屏
qrc-标签和按钮、调色板加载图片
qrc-标签和按钮、调色板加载图片
65 0
|
C#
【WPF】使用Popup控件做浮窗/提示框
原文:【WPF】使用Popup控件做浮窗/提示框 需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作。 效果如下图: 当鼠标移入左上角的【多选显示】框内,出现下面的浮窗(悬浮在原UI之上)。
4518 0
如何解决WPF中 ScrollViewer 内包含 TreeView 或者 ListBox 等控件时滚轮事件被劫持的问题
如何解决WPF中 ScrollViewer 内包含 TreeView 或者 ListBox 等控件时滚轮事件被劫持的问题
swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)
swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)
252 0
swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)
UGUI系列-鼠标移动到按钮上显示信息(Unity3D)
有时候图标不能很好的说明这个功能的解释,就需要一些说明性文字显示。就比如可以在鼠标移动到UI上面的时候显示文字。 那么如何在UGUI上,鼠标移动上去显示文字说明呢。 大家都知道,当鼠标移动到button按钮上面的时候会出现变化,主要是button这个组件在控制
|
Android开发
Android图片选择器,仿微信的图片选择器的样式和效果。支持图片预览和图片切换
Android图片选择器,仿微信的图片选择器的样式和效果。支持图片的单选、限数量的多选和不限数量的多选。支持图片预览和图片文件夹的切换。支持图片单选并剪裁。 先上效果图: 1、引入依赖 在Project的build.gradle在添加以下代码 allprojects { repositories { ... maven { url 'https://jitpack.io' } // 如果你使用的是1.4.0或更早的版本,这句可以不用。
6055 0
|
Web App开发 C# Windows
WPF图片浏览器(显示大图、小图等)
原文:WPF图片浏览器(显示大图、小图等) 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangshubo1989/article/details/46784601 1.概述                最近利用WPF做了一个图片浏览器,能够将文件夹中的所有图片以小图的形式显示,并将选中的图片以512*512大小显示。
2717 0
Winform中Picture控件图片的拖拽显示
原文:Winform中Picture控件图片的拖拽显示 注解:最近做了一个小工具,在Winform中对Picture控件有一个需求,可以通过鼠标从外部拖拽图片到控件的上,释放鼠标,显示图片! 首先你需要对你的整个Fom窗口的AllowDrop设置Ture                   //函数从动态链接库中倒入(模拟鼠标事件) [System.
1186 0
|
C#
关于wpf中popup跟随鼠标移动显示
原文:关于wpf中popup跟随鼠标移动显示 最近在做一个画图工具,里面有一个功能是需要实现,当鼠标移动的时候在,鼠标的旁边显示坐标信息。 第一反应是想到了tooltip,但是tooltip有许多的限制,查询资料的过程中看到了popup,popup比tooltip更加灵活,下面讲讲tooltip跟popup的区别: 1.tooltip会自动显示,自动隐藏,而popup则需要设置IsOpen属性,并且在Popup.StaysOen属性为true时,Popup控件会一直显示,直到显式地将IsOpen属性设置为False。
2038 0

热门文章

最新文章