private void DrawInternal(IntPtr hdc, int index, int overlayIndex, ImageListDrawOptions options, ImageListDrawStates state, int alpha, Point location, int newSize) {
var param = new IMAGELISTDRAWPARAMS() {
//himl = this.Handle;
himl = this.Handle,
hdcDst = hdc,
rgbBk = -1,
i = index,
x = location.X,
y = location.Y,
fStyle = ((int)options | (overlayIndex << 8) | (newSize == -1 ? 0 : (int)ImageListDrawOptions.Scale)),
fState = state,
Frame = alpha
};
param.cx = param.cy = newSize == -1 ? 0 : newSize;
param.cbSize = Marshal.SizeOf(param);
var hresult = this._ImageList.Draw(ref param);
Marshal.ThrowExceptionForHR(hresult);
}