aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 15444|回复: 1

combobox下拉框自绘分享

[复制链接]

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
发表于 2018-8-5 15:29:55 | 显示全部楼层 |阅读模式
本帖最后由 popdes 于 2018-8-5 15:32 编辑

看到网上有好多对combobox控件进行各种自绘的,但是代码写下来,感觉这么麻烦的改造,还不如直接用htmlayout来的方便灵活.....
效果如下:
1533453234887652.png

代码如下:
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="combobox控件自绘演示";right=255;bottom=104)
  4. winform.add(
  5. combobox={cls="combobox";left=62;top=30;right=206;bottom=56;color=255;edge=1;items={"10";"13";"25";"50";"36";"70"};mode="dropdownlist";ownerDraw=1;vscroll=1;style=0x20/*_CBS_OWNERDRAWVARIABLE*/|0x200/*_CBS_HASSTRINGS*/;z=1}
  6. )
  7. /*}}*/

  8. import win.graphics;
  9. winform.combobox.onDrawItem = function(drawItem){

  10.     var cvs = win.graphics.canvas(); // 创建一个画布
  11.     cvs.fromHDC(drawItem.hDC); // 传入 hDC
  12.         //奇偶行
  13.     if(drawItem.itemID%2!=0){
  14.             cvs.brush.color = 0x00c044; // 定义刷子颜色
  15.     }
  16.     else {
  17.             cvs.brush.color = 0xffffff;
  18.     }
  19.     //当时是想改变这个RC大小的,也可以舍弃不用
  20.     var rc = ::RECT(drawItem.rcItem.left,drawItem.rcItem.top,drawItem.rcItem.right,drawItem.rcItem.bottom);
  21.    
  22.     cvs.fillRect(rc);
  23.     cvs.pen.color = 0x000000;
  24.     //只画底部线条
  25.     cvs.drawEdge(rc, 0x8/*_BF_BOTTOM*/);
  26.     //焦点处理
  27.     if(drawItem.itemState&1/*_ODS_SELECTED*/){
  28.             cvs.font.color = 0x0000ff;
  29.             cvs.textOut(rc.left+20, rc.top, winform.combobox.items[drawItem.itemID+1])
  30.             cvs.drawFocusRect(rc);
  31.     }else {
  32.             cvs.pen.color = 0xff8057; // 定义画笔的颜色
  33.             cvs.textOut(rc.left+20, rc.top, winform.combobox.items[drawItem.itemID+1]);
  34.     }

  35.     cvs.destroy();
  36. }


  37. winform.show()
  38. win.loopMessage();
复制代码

38

主题

129

回帖

1045

积分

荣誉会员

积分
1045
 楼主| 发表于 2018-8-5 17:31:01 | 显示全部楼层


  1.     //从文件创建位图
  2.     var bmp = gdip.bitmap("C:\Users\popdes\Desktop\bbb.png");
  3.     //图形对象graphics(可以看作是画板)
  4.     var graphics = gdip.graphics(drawItem.hDC)
  5.     graphics.drawImageRect(bmp,drawItem.rcItem.left,drawItem.rcItem.top+2.5,drawItem.rcItem.height()-5,drawItem.rcItem.height()-5);
  6.     graphics.delete();
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-9-15 20:56 , Processed in 0.059163 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表