/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param Name="hdc">Device context to draw to</param> /// <param Name="index">Index of image to draw</param> /// <param Name="x">X Position to draw at</param> /// <param Name="y">Y Position to draw at</param> /// <param Name="flags">Drawing flags</param> /// <param Name="cx">Width to draw</param> /// <param Name="cy">Height to draw</param> /// <param Name="foreColor">Fore colour to blend with when using the /// ILD_SELECTED or ILD_BLEND25 flags</param> /// <param Name="stateFlags">State flags</param> /// <param Name="glowOrShadowColor">If stateFlags include ILS_GLOW, then /// the colour to use for the glow effect. Otherwise if stateFlags includes /// ILS_SHADOW, then the colour to use for the shadow.</param> /// <param Name="saturateColorOrAlpha">If stateFlags includes ILS_ALPHA, /// then the alpha component is applied to the icon. Otherwise if /// ILS_SATURATE is included, then the (R,G,B) components are used /// to saturate the image.</param> public void DrawImage( IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, System.Drawing.Color foreColor, ImageListDrawStateConstants stateFlags, System.Drawing.Color saturateColorOrAlpha, System.Drawing.Color glowOrShadowColor ) { IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS(); pimldp.hdcDst = hdc; pimldp.cbSize = Marshal.SizeOf(pimldp.GetType()); pimldp.i = index; pimldp.x = x; pimldp.y = y; pimldp.cx = cx; pimldp.cy = cy; pimldp.rgbFg = Color.FromArgb(0, foreColor.R, foreColor.G, foreColor.B).ToArgb(); Debug.WriteLine(pimldp.rgbFg.ToString()); pimldp.fStyle = (int)flags; pimldp.fState = (int)stateFlags; if ((stateFlags & ImageListDrawStateConstants.ILS_ALPHA) == ImageListDrawStateConstants.ILS_ALPHA) { // Set the alpha: pimldp.Frame = (int)saturateColorOrAlpha.A; } else if ((stateFlags & ImageListDrawStateConstants.ILS_SATURATE) == ImageListDrawStateConstants.ILS_SATURATE) { // discard alpha channel: saturateColorOrAlpha = Color.FromArgb(0, saturateColorOrAlpha.R, saturateColorOrAlpha.G, saturateColorOrAlpha.B); // set the saturate color pimldp.Frame = saturateColorOrAlpha.ToArgb(); } glowOrShadowColor = Color.FromArgb(0, glowOrShadowColor.R, glowOrShadowColor.G, glowOrShadowColor.B); pimldp.crEffect = glowOrShadowColor.ToArgb(); if (iImageList == null) { pimldp.himl = hIml; int ret = ImageList_DrawIndirect(ref pimldp); } else { iImageList.Draw(ref pimldp); } }
/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param name="hdc">Device context to draw to</param> /// <param name="index">Index of image to draw</param> /// <param name="x">X Position to draw at</param> /// <param name="y">Y Position to draw at</param> /// <param name="flags">Drawing flags</param> /// <param name="cx">Width to draw</param> /// <param name="cy">Height to draw</param> /// <param name="foreColor">Fore colour to blend with when using the /// ILD_SELECTED or ILD_BLEND25 flags</param> /// <param name="stateFlags">State flags</param> /// <param name="glowOrShadowColor">If stateFlags include ILS_GLOW, then /// the colour to use for the glow effect. Otherwise if stateFlags includes /// ILS_SHADOW, then the colour to use for the shadow.</param> /// <param name="saturateColorOrAlpha">If stateFlags includes ILS_ALPHA, /// then the alpha component is applied to the icon. Otherwise if /// ILS_SATURATE is included, then the (R,G,B) components are used /// to saturate the image.</param> public void DrawImage( IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, Color foreColor, ImageListDrawStateConstants stateFlags, Color saturateColorOrAlpha, Color glowOrShadowColor ) { var pimldp = new Imagelistdrawparams(); pimldp.hdcDst = hdc; pimldp.cbSize = Marshal.SizeOf(pimldp.GetType()); pimldp.i = index; pimldp.x = x; pimldp.y = y; pimldp.cx = cx; pimldp.cy = cy; pimldp.rgbFg = Color.FromArgb(0, foreColor.R, foreColor.G, foreColor.B).ToArgb(); Console.WriteLine("{0}", pimldp.rgbFg); pimldp.fStyle = (int)flags; pimldp.fState = (int)stateFlags; if ((stateFlags & ImageListDrawStateConstants.IlsAlpha) == ImageListDrawStateConstants.IlsAlpha) { // Set the alpha: pimldp.Frame = (int)saturateColorOrAlpha.A; } else if ((stateFlags & ImageListDrawStateConstants.IlsSaturate) == ImageListDrawStateConstants.IlsSaturate) { // discard alpha channel: saturateColorOrAlpha = Color.FromArgb(0, saturateColorOrAlpha.R, saturateColorOrAlpha.G, saturateColorOrAlpha.B); // set the saturate color pimldp.Frame = saturateColorOrAlpha.ToArgb(); } glowOrShadowColor = Color.FromArgb(0, glowOrShadowColor.R, glowOrShadowColor.G, glowOrShadowColor.B); pimldp.crEffect = glowOrShadowColor.ToArgb(); if (_iImageList == null) { pimldp.himl = _hIml; var ret = ImageList_DrawIndirect(ref pimldp); } else { _iImageList.Draw(ref pimldp); } }
/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param name="hdc">Device context to draw to</param> /// <param name="index">Index of image to draw</param> /// <param name="x">X Position to draw at</param> /// <param name="y">Y Position to draw at</param> /// <param name="flags">Drawing flags</param> /// <param name="cx">Width to draw</param> /// <param name="cy">Height to draw</param> /// <param name="foreColor">Fore colour to blend with when using the ILD_SELECTED or ILD_BLEND25 flags</param> /// <param name="stateFlags">State flags</param> /// <param name="saturateColorOrAlpha">If stateFlags includes ILS_ALPHA, then the alpha component is applied to the icon. Otherwise if /// ILS_SATURATE is included, then the (R,G,B) components are used to saturate the image.</param> /// <param name="glowOrShadowColor">If stateFlags include ILS_GLOW, then the colour to use for the glow effect. Otherwise if stateFlags includes /// ILS_SHADOW, then the colour to use for the shadow.</param> public void DrawImage( IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, System.Drawing.Color foreColor, ImageListDrawStateConstants stateFlags, System.Drawing.Color saturateColorOrAlpha, System.Drawing.Color glowOrShadowColor) { IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS(); pimldp.HdcDst = hdc; pimldp.Size = Marshal.SizeOf(pimldp.GetType()); pimldp.Index = index; pimldp.X = x; pimldp.Y = y; pimldp.CX = cx; pimldp.CY = cy; pimldp.ForegroundRgb = Color.FromArgb(0, foreColor.R, foreColor.G, foreColor.B).ToArgb(); pimldp.Style = (int)flags; pimldp.State = (int)stateFlags; if ((stateFlags & ImageListDrawStateConstants.ILS_ALPHA) == ImageListDrawStateConstants.ILS_ALPHA) { // Set the alpha pimldp.Frame = saturateColorOrAlpha.A; } else if ((stateFlags & ImageListDrawStateConstants.ILS_SATURATE) == ImageListDrawStateConstants.ILS_SATURATE) { // discard alpha channel: saturateColorOrAlpha = Color.FromArgb(0, saturateColorOrAlpha.R, saturateColorOrAlpha.G, saturateColorOrAlpha.B); // set the saturate color pimldp.Frame = saturateColorOrAlpha.ToArgb(); } glowOrShadowColor = Color.FromArgb(0, glowOrShadowColor.R, glowOrShadowColor.G, glowOrShadowColor.B); pimldp.Effect = glowOrShadowColor.ToArgb(); if (this.imageList == null) { pimldp.Himl = this.himl; int ret = ImageList_DrawIndirect(ref pimldp); } else { this.imageList.Draw(ref pimldp); } }
public static bool DrawImageList(Graphics g, ImageList il, int index, int x, int y, bool isSelected, bool isDisabled) { ImageListDrawItemConstants flags = (isSelected ? ImageListDrawItemConstants.ILD_SELECTED : ImageListDrawItemConstants.ILD_NORMAL) | ImageListDrawItemConstants.ILD_TRANSPARENT; ImageListDrawStateConstants state = isDisabled ? ImageListDrawStateConstants.ILS_SATURATE : ImageListDrawStateConstants.ILS_NORMAL; try { IntPtr hdc = g.GetHdc(); return(DrawImage(il, hdc, index, x, y, flags, 0, 0, state)); } finally { g.ReleaseHdc(); } }
/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param name="hdc">Device context to draw to</param> /// <param name="index">Index of image to draw</param> /// <param name="x">X Position to draw at</param> /// <param name="y">Y Position to draw at</param> /// <param name="flags">Drawing flags</param> /// <param name="cx">Width to draw</param> /// <param name="cy">Height to draw</param> /// <param name="foreColor">Fore colour to blend with when using the /// ILD_SELECTED or ILD_BLEND25 flags</param> /// <param name="stateFlags">State flags</param> /// <param name="glowOrShadowColor">If stateFlags include ILS_GLOW, then /// the colour to use for the glow effect. Otherwise if stateFlags includes /// ILS_SHADOW, then the colour to use for the shadow.</param> /// <param name="saturateColorOrAlpha">If stateFlags includes ILS_ALPHA, /// then the alpha component is applied to the icon. Otherwise if /// ILS_SATURATE is included, then the (R,G,B) components are used /// to saturate the image.</param> public void DrawImage( IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, System.Drawing.Color foreColor, ImageListDrawStateConstants stateFlags, System.Drawing.Color saturateColorOrAlpha, System.Drawing.Color glowOrShadowColor ) { IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS(); pimldp.hdcDst = hdc; pimldp.cbSize = Marshal.SizeOf(pimldp.GetType()); pimldp.i = index; pimldp.x = x; pimldp.y = y; pimldp.cx = cx; pimldp.cy = cy; pimldp.rgbFg = Color.FromArgb(0, foreColor.R, foreColor.G, foreColor.B).ToArgb(); Console.WriteLine("{0}", pimldp.rgbFg); pimldp.fStyle = (int)flags; pimldp.fState = (int)stateFlags; if ((stateFlags & ImageListDrawStateConstants.ILS_ALPHA) == ImageListDrawStateConstants.ILS_ALPHA) { // Set the alpha: pimldp.Frame = (int)saturateColorOrAlpha.A; } else if ((stateFlags & ImageListDrawStateConstants.ILS_SATURATE) == ImageListDrawStateConstants.ILS_SATURATE) { // discard alpha channel: saturateColorOrAlpha = Color.FromArgb(0, saturateColorOrAlpha.R, saturateColorOrAlpha.G, saturateColorOrAlpha.B); // set the saturate color pimldp.Frame = saturateColorOrAlpha.ToArgb(); } glowOrShadowColor = Color.FromArgb(0, glowOrShadowColor.R, glowOrShadowColor.G, glowOrShadowColor.B); pimldp.crEffect = glowOrShadowColor.ToArgb(); if (iImageList == null) { pimldp.himl = hIml; int ret = ImageList_DrawIndirect(ref pimldp); } else { iImageList.Draw(ref pimldp); } }
/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param name="hdc">Device context to draw to</param> /// <param name="index">Index of image to draw</param> /// <param name="x">X Position to draw at</param> /// <param name="y">Y Position to draw at</param> /// <param name="flags">Drawing flags</param> /// <param name="cx">Width to draw</param> /// <param name="cy">Height to draw</param> /// <param name="foreColor">Fore colour to blend with when using the ILD_SELECTED or ILD_BLEND25 flags</param> /// <param name="stateFlags">State flags</param> /// <param name="saturateColorOrAlpha">If stateFlags includes ILS_ALPHA, then the alpha component is applied to the icon. Otherwise if /// ILS_SATURATE is included, then the (R,G,B) components are used to saturate the image.</param> /// <param name="glowOrShadowColor">If stateFlags include ILS_GLOW, then the colour to use for the glow effect. Otherwise if stateFlags includes /// ILS_SHADOW, then the colour to use for the shadow.</param> public void DrawImage( IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, System.Drawing.Color foreColor, ImageListDrawStateConstants stateFlags, System.Drawing.Color saturateColorOrAlpha, System.Drawing.Color glowOrShadowColor) { IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS(); pimldp.HdcDst = hdc; pimldp.Size = Marshal.SizeOf(pimldp.GetType()); pimldp.Index = index; pimldp.X = x; pimldp.Y = y; pimldp.CX = cx; pimldp.CY = cy; pimldp.ForegroundRgb = Color.FromArgb(0, foreColor.R, foreColor.G, foreColor.B).ToArgb(); pimldp.Style = (int)flags; pimldp.State = (int)stateFlags; if ((stateFlags & ImageListDrawStateConstants.ILS_ALPHA) == ImageListDrawStateConstants.ILS_ALPHA) { // Set the alpha pimldp.Frame = (int)saturateColorOrAlpha.A; } else if ((stateFlags & ImageListDrawStateConstants.ILS_SATURATE) == ImageListDrawStateConstants.ILS_SATURATE) { // discard alpha channel: saturateColorOrAlpha = Color.FromArgb(0, saturateColorOrAlpha.R, saturateColorOrAlpha.G, saturateColorOrAlpha.B); // set the saturate color pimldp.Frame = saturateColorOrAlpha.ToArgb(); } glowOrShadowColor = Color.FromArgb(0, glowOrShadowColor.R, glowOrShadowColor.G, glowOrShadowColor.B); pimldp.Effect = glowOrShadowColor.ToArgb(); if (this.imageList == null) { pimldp.Himl = this.himl; int ret = ImageList_DrawIndirect(ref pimldp); } else { this.imageList.Draw(ref pimldp); } }
public void DrawImage(IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, Color foreColor, ImageListDrawStateConstants stateFlags, Color saturateColorOrAlpha, Color glowOrShadowColor) { SysImageList.IMAGELISTDRAWPARAMS iMAGELISTDRAWPARAMS = default(SysImageList.IMAGELISTDRAWPARAMS); iMAGELISTDRAWPARAMS.hdcDst = hdc; iMAGELISTDRAWPARAMS.cbSize = Marshal.SizeOf(iMAGELISTDRAWPARAMS.GetType()); iMAGELISTDRAWPARAMS.i = index; iMAGELISTDRAWPARAMS.x = x; iMAGELISTDRAWPARAMS.y = y; iMAGELISTDRAWPARAMS.cx = cx; iMAGELISTDRAWPARAMS.cy = cy; iMAGELISTDRAWPARAMS.rgbFg = Color.FromArgb(0, (int)foreColor.R, (int)foreColor.G, (int)foreColor.B).ToArgb(); Console.WriteLine("{0}", iMAGELISTDRAWPARAMS.rgbFg); iMAGELISTDRAWPARAMS.fStyle = (int)flags; iMAGELISTDRAWPARAMS.fState = (int)stateFlags; if ((stateFlags & ImageListDrawStateConstants.ILS_ALPHA) == ImageListDrawStateConstants.ILS_ALPHA) { iMAGELISTDRAWPARAMS.Frame = (int)saturateColorOrAlpha.A; } else if ((stateFlags & ImageListDrawStateConstants.ILS_SATURATE) == ImageListDrawStateConstants.ILS_SATURATE) { saturateColorOrAlpha = Color.FromArgb(0, (int)saturateColorOrAlpha.R, (int)saturateColorOrAlpha.G, (int)saturateColorOrAlpha.B); iMAGELISTDRAWPARAMS.Frame = saturateColorOrAlpha.ToArgb(); } glowOrShadowColor = Color.FromArgb(0, (int)glowOrShadowColor.R, (int)glowOrShadowColor.G, (int)glowOrShadowColor.B); iMAGELISTDRAWPARAMS.crEffect = glowOrShadowColor.ToArgb(); if (this.iImageList == null) { iMAGELISTDRAWPARAMS.himl = this.hIml; int num = SysImageList.ImageList_DrawIndirect(ref iMAGELISTDRAWPARAMS); } else { this.iImageList.Draw(ref iMAGELISTDRAWPARAMS); } }
/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param name="il">The image list from which an item will be drawn</param> /// <param name="hdc">Device context to draw to</param> /// <param name="index">Index of image to draw</param> /// <param name="x">X Position to draw at</param> /// <param name="y">Y Position to draw at</param> /// <param name="flags">Drawing flags</param> /// <param name="cx">Width to draw</param> /// <param name="cy">Height to draw</param> /// <param name="stateFlags">State flags</param> public static bool DrawImage(ImageList il, IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, ImageListDrawStateConstants stateFlags) { IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS(); pimldp.hdcDst = hdc; pimldp.cbSize = Marshal.SizeOf(pimldp.GetType()); pimldp.i = index; pimldp.x = x; pimldp.y = y; pimldp.cx = cx; pimldp.cy = cy; pimldp.rgbFg = CLR_DEFAULT; pimldp.fStyle = (uint)flags; pimldp.fState = (uint)stateFlags; pimldp.himl = il.Handle; return(ImageList_DrawIndirect(ref pimldp)); }
/// <summary> /// Draws an image using the specified flags and state on XP systems. /// </summary> /// <param name="il">The image list from which an item will be drawn</param> /// <param name="hdc">Device context to draw to</param> /// <param name="index">Index of image to draw</param> /// <param name="x">X Position to draw at</param> /// <param name="y">Y Position to draw at</param> /// <param name="flags">Drawing flags</param> /// <param name="cx">Width to draw</param> /// <param name="cy">Height to draw</param> /// <param name="stateFlags">State flags</param> public static bool DrawImage(ImageList il, IntPtr hdc, int index, int x, int y, ImageListDrawItemConstants flags, int cx, int cy, ImageListDrawStateConstants stateFlags) { IMAGELISTDRAWPARAMS pimldp = new IMAGELISTDRAWPARAMS(); pimldp.hdcDst = hdc; pimldp.cbSize = Marshal.SizeOf(pimldp.GetType()); pimldp.i = index; pimldp.x = x; pimldp.y = y; pimldp.cx = cx; pimldp.cy = cy; pimldp.rgbFg = CLR_DEFAULT; pimldp.fStyle = (uint) flags; pimldp.fState = (uint) stateFlags; pimldp.himl = il.Handle; return ImageList_DrawIndirect(ref pimldp); }