# aardio 范例: 列表框控件（listbox） - GDI 自绘



```aardio
//列表框控件（listbox） - GDI 自绘
import win.ui;
/*DSG{{*/
var winform = win.form(text="listbox自绘(GDI方式)";right=757;bottom=467)
winform.add(
listbox={cls="listbox";left=12;top=11;right=745;bottom=457;bgcolor=0xFFFFFF;db=1;dl=1;dr=1;dt=1;items={};ownerDraw=1;vscroll=1;z=1}
)
/*}}*/

winform.listbox.onMeasureItem = function(measureItem,dpiScaleX,dpiScaleY){ 
    measureItem.itemHeight = 61 * dpiScaleY;  
}

winform.listbox.onDrawItem = function(drawItem,dpiScaleX,dpiScaleY){ 
     gdi.selectBrush(
     
        function(hdc,pen,brush){
        
            var rc = drawItem.rcItem;
    		gdi.fillRect(hdc,0xFFFFFF,rc);
    		
    		if (drawItem.itemID > 0) {  
    			gdi.drawLine(hdc,rc.left, rc.top,rc.right, rc.top);
    		} 
    		
    		if (drawItem.itemState & 1/*_ODS_SELECTED*/) {  
        		gdi.fillGradient(hdc,rc,0xFFFFFF, 0xFFC4B5,1/*_GRADIENT_FILL_RECT_V*/)
    		}
    		
    		var str = winform.listbox.getItemText(drawItem.itemID + 1);
    		
    		var font = ::LOGFONT(weight=400;point=10;color=0x000000);
    		gdi.textOut(hdc,font,str,rc.left + 18/dpiScaleX, rc.top + 26/dpiScaleY); 
    		
   		},drawItem.hDC,0xF5FDFF/*背景色*/,0xEEEEEE/*画笔色*/)
}
 
for(i=1;10;2){  
	winform.listbox.add("控件属性面板中点击「行为 / 自绘」设为 true");
	winform.listbox.add("也就是在控件创建参数里添加 ownerDraw=true");
}

winform.show();
win.loopMessage();
```

