当前位置: 首页>>代码示例>>C#>>正文


C# ButtonItem.GetImage方法代码示例

本文整理汇总了C#中DevComponents.DotNetBar.ButtonItem.GetImage方法的典型用法代码示例。如果您正苦于以下问题:C# ButtonItem.GetImage方法的具体用法?C# ButtonItem.GetImage怎么用?C# ButtonItem.GetImage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DevComponents.DotNetBar.ButtonItem的用法示例。


在下文中一共展示了ButtonItem.GetImage方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: PaintButton

		public static void PaintButton(ButtonItem button, ItemPaintArgs pa)
		{
			System.Drawing.Graphics g=pa.Graphics;
			ThemeToolbar theme=pa.ThemeToolbar;
			ThemeToolbarParts part=ThemeToolbarParts.Button;
			ThemeToolbarStates state=ThemeToolbarStates.Normal;
			Color textColor=ButtonItemPainterHelper.GetTextColor(button,pa);

			Rectangle rectImage=Rectangle.Empty;
			Rectangle itemRect=button.DisplayRectangle;
			
			Font font=null;
			CompositeImage image=button.GetImage();

			font=button.GetFont(pa, false);

			eTextFormat format= GetStringFormat(button, pa, image);

			bool bSplitButton=(button.SubItems.Count>0 || button.PopupType==ePopupType.Container) && button.ShowSubItems && !button.SubItemsRect.IsEmpty;

			if(bSplitButton)
				part=ThemeToolbarParts.SplitButton;

			// Calculate image position
			if(image!=null)
			{
				if(button.ImagePosition==eImagePosition.Top || button.ImagePosition==eImagePosition.Bottom)
					rectImage=new Rectangle(button.ImageDrawRect.X,button.ImageDrawRect.Y,itemRect.Width,button.ImageDrawRect.Height);
				else
					rectImage=new Rectangle(button.ImageDrawRect.X,button.ImageDrawRect.Y,button.ImageDrawRect.Width,button.ImageDrawRect.Height);

				rectImage.Offset(itemRect.Left,itemRect.Top);
				rectImage.Offset((rectImage.Width-button.ImageSize.Width)/2,(rectImage.Height-button.ImageSize.Height)/2);
				rectImage.Width=button.ImageSize.Width;
				rectImage.Height=button.ImageSize.Height;
			}

			// Set the state and text brush
			if(!ButtonItemPainter.IsItemEnabled(button, pa))
			{
				state=ThemeToolbarStates.Disabled;
			}
			else if(button.IsMouseDown)
			{
				state=ThemeToolbarStates.Pressed;
			}
			else if(button.IsMouseOver && button.Checked)
			{
				state=ThemeToolbarStates.HotChecked;
			}
			else if(button.IsMouseOver || button.Expanded)
			{
				state=ThemeToolbarStates.Hot;
			}
			else if(button.Checked)
			{
				state=ThemeToolbarStates.Checked;
			}
			
			Rectangle backRect=button.DisplayRectangle;
			if(button.HotTrackingStyle==eHotTrackingStyle.Image && image!=null)
			{
				backRect=rectImage;
				backRect.Inflate(3,3);
			}
			else if(bSplitButton)
			{
				backRect.Width=backRect.Width-button.SubItemsRect.Width;
			}

			// Draw Button Background
			if(button.HotTrackingStyle!=eHotTrackingStyle.None)
			{
				theme.DrawBackground(g,part,state,backRect);
			}

			// Draw Image
			if(image!=null && button.ButtonStyle!=eButtonStyle.TextOnlyAlways)
			{
				if(state==ThemeToolbarStates.Normal && button.HotTrackingStyle==eHotTrackingStyle.Color)
				{
					// Draw gray-scale image for this hover style...
					float[][] array = new float[5][];
					array[0] = new float[5] {0.2125f, 0.2125f, 0.2125f, 0, 0};
					array[1] = new float[5] {0.5f, 0.5f, 0.5f, 0, 0};
					array[2] = new float[5] {0.0361f, 0.0361f, 0.0361f, 0, 0};
					array[3] = new float[5] {0,       0,       0,       1, 0};
					array[4] = new float[5] {0.2f,    0.2f,    0.2f,    0, 1};
					System.Drawing.Imaging.ColorMatrix grayMatrix = new System.Drawing.Imaging.ColorMatrix(array);
					System.Drawing.Imaging.ImageAttributes att = new System.Drawing.Imaging.ImageAttributes();
					att.SetColorMatrix(grayMatrix);
					//g.DrawImage(image,rectImage,0,0,image.Width,image.Height,GraphicsUnit.Pixel,att);
					image.DrawImage(g,rectImage,0,0,image.Width,image.Height,GraphicsUnit.Pixel,att);
				}
				else if(state==ThemeToolbarStates.Normal && !image.IsIcon)
				{
					// Draw image little bit lighter, I decied to use gamma it is easy
					System.Drawing.Imaging.ImageAttributes lightImageAttr = new System.Drawing.Imaging.ImageAttributes();
					lightImageAttr.SetGamma(.7f,System.Drawing.Imaging.ColorAdjustType.Bitmap);
					//g.DrawImage(image,rectImage,0,0,image.Width,image.Height,GraphicsUnit.Pixel,lightImageAttr);
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:

示例2: LayoutButton

        public static void LayoutButton(ButtonItem button, bool startButtonType)
        {
            Control objCtrl = button.ContainerControl as Control;
            if (objCtrl == null || objCtrl.Disposing || objCtrl.IsDisposed) //if(!BarFunctions.IsHandleValid(objCtrl))
                return;
            if (objCtrl is ButtonX && button._FitContainer)
            {
                LayoutButtonX(button);
                return;
            }
            else if (button.FixedSize.Width > 0 && button.FixedSize.Height > 0)
            {
                button.SetDisplayRectangle(new Rectangle(button.DisplayRectangle.Location, button.FixedSize));
                LayoutButtonX(button);
                return;
            }

            bool isOnMenu = button.IsOnMenu;
            if (isOnMenu && button.Parent is ItemContainer)
                isOnMenu = false;
            bool bHasImage = false;
            bool isSymbolImage = false;
            if (!string.IsNullOrEmpty(button.Symbol))
            {
                bHasImage = true;
                isSymbolImage = true;
            }
            else
            {
                using (CompositeImage buttonImage = button.GetImage())
                {
                    if (buttonImage != null || startButtonType)
                        bHasImage = true;
                }
            }

            eImagePosition imagePosition = button.ImagePosition;
            bool rightToLeft = (objCtrl.RightToLeft == RightToLeft.Yes);

            Rectangle textDrawRect = Rectangle.Empty;
            Rectangle imageDrawRect = Rectangle.Empty;
            Rectangle subItemsRect = Rectangle.Empty;
            Rectangle bounds = new Rectangle(button.DisplayRectangle.Location, Size.Empty); // Critical to preserve the location for compatibility reasons

            if (rightToLeft && button.Orientation == eOrientation.Horizontal)
            {
                if (imagePosition == eImagePosition.Left)
                    imagePosition = eImagePosition.Right;
                else if (imagePosition == eImagePosition.Right)
                    imagePosition = eImagePosition.Left;
            }

            int measureStringWidth = 0;

            if (button._FitContainer)
                measureStringWidth = button.DisplayRectangle.Width - 4;

            bounds.Width = 0;
            bounds.Height = 0;

            Graphics g = BarFunctions.CreateGraphics(objCtrl);
            try
            {
                eTextFormat stringFormat = GetTextFormat(button);

                // Get the right image size that we will use for calculation
                Size imageSize = Size.Empty;
                if (isSymbolImage)
                {
                    Font symFont = Symbols.GetFontAwesome(button.SymbolSize);
                    
                    if(button.IsOnMenu) // Need to do this to get consistent size for the symbol since they are not all the same width we pick widest
                        imageSize = TextDrawing.MeasureString(g, "\uF00A", symFont);
                    else
                        imageSize = TextDrawing.MeasureString(g, button.Symbol, symFont);

                    int descent = (int)Math.Ceiling((symFont.FontFamily.GetCellDescent(symFont.Style) *
                    symFont.Size / symFont.FontFamily.GetEmHeight(symFont.Style)));
                    imageSize.Height -= descent;
                    button.ImageSize = imageSize;
                }
                else
                {
                    imageSize = GetLayoutImageSize(button, bHasImage, isOnMenu, startButtonType);
                }
                bool ribbonBarButton = false;
                if (button._FitContainer && bHasImage && (imagePosition == eImagePosition.Left || imagePosition == eImagePosition.Right))
                {
                    measureStringWidth -= (imageSize.Width + 10);
                }
                else if (button.RibbonWordWrap && bHasImage && imagePosition == eImagePosition.Top && objCtrl is RibbonBar && UseRibbonWordBreak(button))
                {
                    measureStringWidth = imageSize.Width + 4;
                    stringFormat |= eTextFormat.WordBreak;
                    ribbonBarButton = true;
                }

                // Measure string
                Font font = button.GetFont(null, true);

//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:

示例3: LayoutButtonX

        public static void LayoutButtonX(ButtonItem button)
        {
            Control objCtrl = button.ContainerControl as Control;
            ButtonX btnX = button.ContainerControl as ButtonX;
            if (!BarFunctions.IsHandleValid(objCtrl))
                return;
            bool isOnMenu = button.IsOnMenu;
            if (isOnMenu && button.Parent is ItemContainer)
                isOnMenu = false;
            bool bHasImage = false;

            if (!string.IsNullOrEmpty(button.Symbol))
            {
                bHasImage = true;
            }
            else
            {
                using (CompositeImage buttonImage = button.GetImage())
                {
                    if (buttonImage != null)
                        bHasImage = true;
                }
            }

            eImagePosition imagePosition = button.ImagePosition;
            bool rightToLeft = (objCtrl.RightToLeft == RightToLeft.Yes);

            Rectangle textDrawRect = Rectangle.Empty;
            Rectangle imageDrawRect = Rectangle.Empty;
            Rectangle subItemsRect = Rectangle.Empty;
            Rectangle bounds = button.Bounds;

            // Calculate sub-items rectangle
            if (button.SubItems.Count > 0 && button.ShowSubItems &&
                        !(button.TextMarkupBody != null && button.TextMarkupBody.HasExpandElement && button.ButtonStyle != eButtonStyle.Default))
            {
                // Add small button to expand the item
                if (button.Orientation == eOrientation.Horizontal)
                {
                    if (rightToLeft)
                        subItemsRect = new Rectangle(0, 0, button.SubItemsExpandWidth, bounds.Height);
                    else
                        subItemsRect = new Rectangle(bounds.Width - button.SubItemsExpandWidth, 0, button.SubItemsExpandWidth, bounds.Height);
                    if (rightToLeft)
                        bounds.X += button.SubItemsExpandWidth + 1;
                    bounds.Width -= button.SubItemsExpandWidth + 1;
                }
                else
                {
                    subItemsRect = new Rectangle(0, bounds.Height - button.SubItemsExpandWidth, bounds.Width, button.SubItemsExpandWidth);
                    bounds.Height -= button.SubItemsExpandWidth + 1;
                }
            }

            // Adjust image position
            if (rightToLeft && button.Orientation == eOrientation.Horizontal)
            {
                if (imagePosition == eImagePosition.Left)
                    imagePosition = eImagePosition.Right;
                else if (imagePosition == eImagePosition.Right)
                    imagePosition = eImagePosition.Left;
            }

            int measureStringWidth = 0;

            measureStringWidth = bounds.Width;

            Graphics g = BarFunctions.CreateGraphics(objCtrl);
            try
            {

                // Get the right image size that we will use for calculation
                Size imageSize = Size.Empty;
                if (!string.IsNullOrEmpty(button.Symbol))
                {
                    Font symFont = Symbols.GetFontAwesome(button.SymbolSize);
                    imageSize = TextDrawing.MeasureStringLegacy(g, button.Symbol, symFont, Size.Empty, eTextFormat.Default);
                    int descent = (int)Math.Ceiling((symFont.FontFamily.GetCellDescent(symFont.Style) *
                    symFont.Size / symFont.FontFamily.GetEmHeight(symFont.Style)));
                    imageSize.Height -= descent;
                    button.ImageSize = imageSize;
                }
                else
                {
                    if (!button.ImageFixedSize.IsEmpty)
                        imageSize = button.ImageFixedSize;
                    else
                        imageSize = button.ImageSize;
                }

                if (bHasImage && (imagePosition == eImagePosition.Left || imagePosition == eImagePosition.Right))
                {
                    if (btnX != null)
                        measureStringWidth -= imageSize.Width + btnX.ImageTextSpacing * 2 + 3;
                    else
                        measureStringWidth -= (imageSize.Width + 8);
                }

                if (bHasImage && !imageSize.IsEmpty && btnX != null && btnX.ImageTextSpacing != 0)
                {
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:

示例4: Arrange

        /// <summary>
        /// Arranges the button inner parts when button size has changed externally.
        /// </summary>
        /// <param name="button">Button to arrange inner parts for.</param>
        public static void Arrange(ButtonItem button)
        {
            int minTextSize = 8;
            bool isOnMenu = button.IsOnMenu;
            if (isOnMenu && button.Parent is ItemContainer)
                isOnMenu = false;
            bool hasImage = false;

            Size imageSize = Size.Empty;
            if (!string.IsNullOrEmpty(button.Symbol))
            {
                hasImage = true;
                imageSize = button.ImageSize;
            }
            else
            {
                using (CompositeImage buttonImage = button.GetImage())
                {
                    if (buttonImage != null)
                        hasImage = true;
                }
                imageSize = GetLayoutImageSize(button, hasImage, isOnMenu, false);
            }

            bool rightToLeft = button.IsRightToLeft;
            Rectangle bounds = button.DisplayRectangle;

            if (isOnMenu)
            {
                // Add 4 pixel padding to the image size, 2 pixels on each side
                imageSize.Height += 2;
                imageSize.Width += 7;
                // Center image if any...
                //if (rightToLeft)
                //{
                //    if (button.IsOnCustomizeMenu)
                //        button.ImageDrawRect = new Rectangle(bounds.Width - (imageSize.Width + bounds.Height + 2), Math.Max(0, (bounds.Height - imageSize.Height) / 2), imageSize.Width, imageSize.Height);
                //    else
                //        button.ImageDrawRect = new Rectangle(bounds.Width - imageSize.Width - 1, Math.Max(0, (bounds.Height - imageSize.Height) / 2), imageSize.Width, imageSize.Height);
                //}
                //else
                {
                    if (button.IsOnCustomizeMenu && !rightToLeft)
                        button.ImageDrawRect = new Rectangle(bounds.Height + 2, Math.Max(0, (bounds.Height - imageSize.Height) / 2), imageSize.Width, imageSize.Height);
                    else
                        button.ImageDrawRect = new Rectangle(0, Math.Max(0, (bounds.Height - imageSize.Height) / 2), imageSize.Width, imageSize.Height);
                }

                //if (rightToLeft)
                //    button.TextDrawRect = new Rectangle(Math.Max(0, button.ImageDrawRect.X - button.TextDrawRect.Width - 2), Math.Max(0, (bounds.Height - button.TextDrawRect.Height) / 2), button.TextDrawRect.Width, button.TextDrawRect.Height);
                //else
                button.TextDrawRect = new Rectangle(button.ImageDrawRect.Right + 8, Math.Max(0, (bounds.Height - button.TextDrawRect.Height) / 2), button.TextDrawRect.Width, button.TextDrawRect.Height);

                return;
            }
            int x = 0;
            if (!button.SubItemsRect.IsEmpty)
            {
                Rectangle subItemsRect = button.SubItemsRect;
                if (button.ContainerControl is RibbonBar && (button.ImagePosition == eImagePosition.Top || button.ImagePosition == eImagePosition.Bottom))
                {
                    subItemsRect = new Rectangle(0, bounds.Height - subItemsRect.Height, bounds.Width, subItemsRect.Height);
                    bounds.Height -= subItemsRect.Height;
                }
                else
                {
                    if (button.Orientation == eOrientation.Horizontal)
                    {
                        if (rightToLeft)
                        {
                            subItemsRect = new Rectangle(0, 0, subItemsRect.Width, bounds.Height);
                            //bounds.Width -= subItemsRect.Width;
                            //bounds.X += subItemsRect.Width;
                            x = subItemsRect.Width;
                        }
                        else
                        {
                            subItemsRect = new Rectangle(bounds.Width - subItemsRect.Width, 0, subItemsRect.Width, bounds.Height);
                            bounds.Width -= subItemsRect.Width;
                        }
                    }
                    else
                    {
                        subItemsRect = new Rectangle(0, 0, bounds.Width, subItemsRect.Height);
                        bounds.Height -= subItemsRect.Height;
                    }
                }
                button.SubItemsRect = subItemsRect;
            }

            if (!hasImage || button.ButtonStyle == eButtonStyle.TextOnlyAlways)
            {
                int newHeight = bounds.Height - 2;
                button.TextDrawRect = new Rectangle(2,
                    Math.Max(0, (bounds.Height - newHeight) / 2), bounds.Width - 4, newHeight);
                return;
//.........这里部分代码省略.........
开发者ID:,项目名称:,代码行数:101,代码来源:


注:本文中的DevComponents.DotNetBar.ButtonItem.GetImage方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。