public Rectangle(ShapeBorder border, ShapeFill fill,int cornerSize, eCornerType cornerType) { m_Border = border; m_Fill = fill; m_CornerSize = cornerSize; this.CornerType = cornerType; }
public Rectangle(ShapeBorder border, ShapeFill fill, int cornerSize, eCornerType cornerType, PaddingInfo padding) { m_Border = border; m_Fill = fill; m_CornerSize = cornerSize; this.Padding = padding; this.CornerType = cornerType; }
private static eCornerType GetCornerType(eCornerType baseType, eCornerType specificType) { if(specificType!=eCornerType.Inherit) return specificType; return baseType; }
public static GraphicsPath GetBorderPath(Rectangle clientRectangle, int cornerSize, eStyleBackgroundPathPart pathPart, eCornerType topLeftCornerType, eCornerType topRightCornerType, eCornerType bottomLeftCornerType, eCornerType bottomRightCornerType, bool leftBorder, bool rightBorder, bool topBorder, bool bottomBorder) { GraphicsPath path = new GraphicsPath(); if (pathPart == eStyleBackgroundPathPart.TopHalf) clientRectangle.Height = clientRectangle.Height / 2; else if (pathPart == eStyleBackgroundPathPart.BottomHalf) { int h = clientRectangle.Height; clientRectangle.Height = clientRectangle.Height / 2; clientRectangle.Y += (h - clientRectangle.Height - 1); } eCornerType corner = topLeftCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.BottomHalf) corner = eCornerType.Square; if (leftBorder) { path.AddLine(clientRectangle.X, clientRectangle.Bottom - (bottomBorder && (bottomLeftCornerType == eCornerType.Diagonal || bottomLeftCornerType == eCornerType.Rounded) ? cornerSize : 0), clientRectangle.X, clientRectangle.Y + (topBorder && (topLeftCornerType == eCornerType.Diagonal || topLeftCornerType == eCornerType.Rounded) ? cornerSize : 0)); } if (leftBorder && topBorder) { if (corner == eCornerType.Rounded) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, cornerSize, eCornerArc.TopLeft); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.X, clientRectangle.Y + cornerSize, clientRectangle.X + cornerSize, clientRectangle.Y); } } if (topBorder) { path.AddLine(clientRectangle.X + ((topLeftCornerType == eCornerType.Diagonal || topLeftCornerType == eCornerType.Rounded) ? cornerSize : 0) , clientRectangle.Y, clientRectangle.Right - (rightBorder && (topRightCornerType == eCornerType.Diagonal || topRightCornerType == eCornerType.Rounded) ? cornerSize : 0), clientRectangle.Y); } corner = topRightCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.BottomHalf) corner = eCornerType.Square; if (topBorder && rightBorder) { if (corner == eCornerType.Rounded) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, cornerSize, eCornerArc.TopRight); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.Right - cornerSize - 1, clientRectangle.Y, clientRectangle.Right, clientRectangle.Y + cornerSize); } } if (rightBorder) { path.AddLine(clientRectangle.Right, clientRectangle.Y + ((topRightCornerType == eCornerType.Diagonal || topRightCornerType == eCornerType.Rounded) ? cornerSize : 0), clientRectangle.Right, clientRectangle.Bottom - (bottomBorder && (bottomRightCornerType == eCornerType.Diagonal || bottomRightCornerType == eCornerType.Rounded) ? cornerSize : 0)); } corner = bottomRightCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.TopHalf) corner = eCornerType.Square; if (corner == eCornerType.Rounded) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, cornerSize, eCornerArc.BottomRight); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.Right, clientRectangle.Bottom - cornerSize - 1, clientRectangle.Right - cornerSize - 1, clientRectangle.Bottom); } if (bottomBorder) { path.AddLine(clientRectangle.Right - ((bottomRightCornerType == eCornerType.Diagonal || bottomRightCornerType == eCornerType.Rounded) ? cornerSize : 0), clientRectangle.Bottom, clientRectangle.X + ((bottomLeftCornerType == eCornerType.Diagonal || bottomLeftCornerType == eCornerType.Rounded) ? cornerSize : 0), clientRectangle.Bottom); } corner = bottomLeftCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.TopHalf) corner = eCornerType.Square; if (corner == eCornerType.Rounded) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, cornerSize, eCornerArc.BottomLeft); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.X + 2, clientRectangle.Bottom, clientRectangle.X, clientRectangle.Bottom - cornerSize - 1); } return path; }
public static GraphicsPath GetRoundedRectanglePath(Rectangle clientRectangle, int topLeftCornerSize, int topRightCornerSize, int bottomLeftCornerSize, int bottomRightCornerSize, eStyleBackgroundPathPart pathPart, eCornerType topLeftCornerType, eCornerType topRightCornerType, eCornerType bottomLeftCornerType, eCornerType bottomRightCornerType, float partSize) { GraphicsPath path = new GraphicsPath(); if (pathPart == eStyleBackgroundPathPart.TopHalf) { if (partSize == 0) clientRectangle.Height = clientRectangle.Height / 2; else clientRectangle.Height = (int)(clientRectangle.Height * partSize); } else if (pathPart == eStyleBackgroundPathPart.BottomHalf) { int h = clientRectangle.Height; if (partSize == 0) clientRectangle.Height = clientRectangle.Height / 2; else clientRectangle.Height = (int)(clientRectangle.Height * partSize); clientRectangle.Y += (h - clientRectangle.Height - 1); } eCornerType corner = topLeftCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.BottomHalf) corner = eCornerType.Square; if (corner == eCornerType.Rounded && topLeftCornerSize>0) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, topLeftCornerSize, eCornerArc.TopLeft); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.X, clientRectangle.Y + topLeftCornerSize, clientRectangle.X + topLeftCornerSize, clientRectangle.Y); } else { path.AddLine(clientRectangle.X, clientRectangle.Y + 2, clientRectangle.X, clientRectangle.Y); path.AddLine(clientRectangle.X, clientRectangle.Y, clientRectangle.X + 2, clientRectangle.Y); } corner = topRightCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.BottomHalf) corner = eCornerType.Square; if (corner == eCornerType.Rounded && topRightCornerSize>0) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, topRightCornerSize, eCornerArc.TopRight); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.Right - topRightCornerSize - 1, clientRectangle.Y, clientRectangle.Right, clientRectangle.Y + topRightCornerSize); } else { path.AddLine(clientRectangle.Right - 2, clientRectangle.Y, clientRectangle.Right, clientRectangle.Y); path.AddLine(clientRectangle.Right, clientRectangle.Y, clientRectangle.Right, clientRectangle.Y + 2); } corner = bottomRightCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.TopHalf) corner = eCornerType.Square; if (corner == eCornerType.Rounded && bottomRightCornerSize>0) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, bottomRightCornerSize, eCornerArc.BottomRight); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.Right, clientRectangle.Bottom - bottomRightCornerSize - 1, clientRectangle.Right - bottomRightCornerSize - 1, clientRectangle.Bottom); } else { path.AddLine(clientRectangle.Right, clientRectangle.Bottom - 2, clientRectangle.Right, clientRectangle.Bottom); path.AddLine(clientRectangle.Right, clientRectangle.Bottom, clientRectangle.Right - 2, clientRectangle.Bottom); } corner = bottomLeftCornerType; if (corner == eCornerType.Inherit) corner = eCornerType.Square; if (pathPart == eStyleBackgroundPathPart.TopHalf) corner = eCornerType.Square; if (corner == eCornerType.Rounded && bottomLeftCornerSize>0) { ArcData ad = ElementStyleDisplay.GetCornerArc(clientRectangle, bottomLeftCornerSize, eCornerArc.BottomLeft); path.AddArc(ad.X, ad.Y, ad.Width, ad.Height, ad.StartAngle, ad.SweepAngle); } else if (corner == eCornerType.Diagonal) { path.AddLine(clientRectangle.X + 2, clientRectangle.Bottom, clientRectangle.X, clientRectangle.Bottom - bottomLeftCornerSize - 1); } else { path.AddLine(clientRectangle.X + 2, clientRectangle.Bottom, clientRectangle.X, clientRectangle.Bottom); path.AddLine(clientRectangle.X, clientRectangle.Bottom, clientRectangle.X, clientRectangle.Bottom - 2); } path.CloseAllFigures(); return path; }
public static GraphicsPath GetRoundedRectanglePath(Rectangle clientRectangle, int cornerSize, eStyleBackgroundPathPart pathPart, eCornerType topLeftCornerType, eCornerType topRightCornerType, eCornerType bottomLeftCornerType, eCornerType bottomRightCornerType, float partSize) { return GetRoundedRectanglePath(clientRectangle, cornerSize, cornerSize, cornerSize, cornerSize, pathPart, topLeftCornerType, topRightCornerType, bottomLeftCornerType, bottomRightCornerType, partSize); }
/// <summary> /// Reset all style properties to default values. /// </summary> public void Reset() { m_BackColor=Color.Empty; m_BackColorSchemePart=eColorSchemePart.None; m_BackColor2=Color.Empty; m_BackColor2SchemePart=eColorSchemePart.None; m_BackColorGradientAngle=0; m_BackColorGradientType = eGradientType.Linear; m_BackgroundImage=null; m_BackgroundImagePosition=eStyleBackgroundImage.Stretch; m_BackgroundImageAlpha=255; m_BackColorBlend.Clear(); // Font m_Font=null; // Text Formating m_WordWrap=false; m_TextAlignment=eStyleTextAlignment.Near; m_TextLineAlignment=eStyleTextAlignment.Center; m_TextTrimming=eStyleTextTrimming.EllipsisCharacter; m_TextColor=Color.Empty; m_TextColorSchemePart=eColorSchemePart.None; m_TextShadowColor = Color.Empty; m_TextShadowColorSchemePart = eColorSchemePart.None; m_TextShadowOffset = Point.Empty; // Style margins m_MarginLeft=0; m_MarginRight=0; m_MarginTop=0; m_MarginBottom=0; // Style inside padding m_PaddingLeft=0; m_PaddingRight=0; m_PaddingTop=0; m_PaddingBottom=0; // Border m_BorderLeft=eStyleBorderType.None; m_BorderRight=eStyleBorderType.None; m_BorderTop=eStyleBorderType.None; m_BorderBottom=eStyleBorderType.None; m_BorderColor=Color.Empty; m_BorderColorSchemePart=eColorSchemePart.None; m_BorderColor2 = Color.Empty; m_BorderColor2SchemePart = eColorSchemePart.None; m_BorderGradientAngle = 90; m_BorderColorLight = Color.Empty; m_BorderColorLightSchemePart = eColorSchemePart.None; m_BorderColorLight2 = Color.Empty; m_BorderColorLight2SchemePart = eColorSchemePart.None; m_BorderLightGradientAngle = 90; m_BorderLeftColor=Color.Empty; m_BorderLeftColorSchemePart=eColorSchemePart.None; m_BorderRightColor=Color.Empty; m_BorderRightColorSchemePart=eColorSchemePart.None; m_BorderTopColor=Color.Empty; m_BorderTopColorSchemePart=eColorSchemePart.None; m_BorderBottomColor=Color.Empty; m_BorderBottomColorSchemePart=eColorSchemePart.None; m_BorderLeftWidth=0; m_BorderRightWidth=0; m_BorderTopWidth=0; m_BorderBottomWidth=0; m_CornerType=eCornerType.Square; m_CornerTypeTopLeft=eCornerType.Inherit; m_CornerTypeTopRight=eCornerType.Inherit; m_CornerTypeBottomLeft=eCornerType.Inherit; m_CornerTypeBottomRight=eCornerType.Inherit; m_CornerDiameter=DEFAULT_CORNER_DIAMETER; m_Class = ""; m_MaximumHeight=0; }
internal void Deserialize(System.Xml.XmlElement styleElement) { m_BackColor1=ColorEx.Empty; if(styleElement.HasAttribute("bc1")) { m_BackColor1.Color=BarFunctions.ColorFromString(styleElement.GetAttribute("bc1")); m_BackColor1.Alpha=System.Xml.XmlConvert.ToByte(styleElement.GetAttribute("bc1a")); } else if(styleElement.HasAttribute("bc1csp")) m_BackColor1.ColorSchemePart=(eColorSchemePart)Enum.Parse(typeof(eColorSchemePart),styleElement.GetAttribute("bc1csp")); m_BackColor2=ColorEx.Empty; if(styleElement.HasAttribute("bc2")) { m_BackColor2.Color=BarFunctions.ColorFromString(styleElement.GetAttribute("bc2")); m_BackColor2.Alpha=System.Xml.XmlConvert.ToByte(styleElement.GetAttribute("bc2a")); } else if(styleElement.HasAttribute("bc2csp")) m_BackColor2.ColorSchemePart=(eColorSchemePart)Enum.Parse(typeof(eColorSchemePart),styleElement.GetAttribute("bc2csp")); m_ForeColor=ColorEx.Empty; if(styleElement.HasAttribute("fc")) { m_ForeColor.Color=BarFunctions.ColorFromString(styleElement.GetAttribute("fc")); m_ForeColor.Alpha=System.Xml.XmlConvert.ToByte(styleElement.GetAttribute("fca")); } else if(styleElement.HasAttribute("fccsp")) m_ForeColor.ColorSchemePart=(eColorSchemePart)Enum.Parse(typeof(eColorSchemePart),styleElement.GetAttribute("fccsp")); m_BorderColor=ColorEx.Empty; if(styleElement.HasAttribute("borderc")) { m_BorderColor.Color=BarFunctions.ColorFromString(styleElement.GetAttribute("borderc")); m_BorderColor.Alpha=System.Xml.XmlConvert.ToByte(styleElement.GetAttribute("borderca")); } else if(styleElement.HasAttribute("bordercsp")) m_BorderColor.ColorSchemePart=(eColorSchemePart)Enum.Parse(typeof(eColorSchemePart),styleElement.GetAttribute("bordercsp")); m_GradientAngle=System.Xml.XmlConvert.ToInt16(styleElement.GetAttribute("ga")); // Load font information if it exists m_Font=null; if(styleElement.HasAttribute("fontname")) { string FontName=styleElement.GetAttribute("fontname"); float FontSize=System.Xml.XmlConvert.ToSingle(styleElement.GetAttribute("fontemsize")); System.Drawing.FontStyle FontStyle=(System.Drawing.FontStyle)System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("fontstyle")); try { m_Font=new Font(FontName,FontSize,FontStyle); } catch(Exception) { m_Font=null; } } // Load Image m_BackgroundImage=null; foreach(System.Xml.XmlElement xmlElem in styleElement.ChildNodes) { if(xmlElem.Name=="backimage") { m_BackgroundImage=BarFunctions.DeserializeImage(xmlElem); m_BackgroundImagePosition=(eBackgroundImagePosition)System.Xml.XmlConvert.ToInt32(xmlElem.GetAttribute("pos")); m_BackgroundImageAlpha=System.Xml.XmlConvert.ToByte(xmlElem.GetAttribute("alpha")); } } m_WordWrap=false; if(styleElement.HasAttribute("wordwrap")) m_WordWrap=System.Xml.XmlConvert.ToBoolean(styleElement.GetAttribute("wordwrap")); m_Alignment=StringAlignment.Near; if(styleElement.HasAttribute("align")) m_Alignment=(StringAlignment)System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("align")); m_LineAlignment=StringAlignment.Center; if(styleElement.HasAttribute("valign")) m_LineAlignment=(StringAlignment)System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("valign")); m_TextTrimming=StringTrimming.EllipsisCharacter; if(styleElement.HasAttribute("trim")) m_TextTrimming=(StringTrimming)System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("trim")); m_Border=eBorderType.None; if(styleElement.HasAttribute("border")) m_Border=(eBorderType)System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("border")); m_BorderWidth=1; if(styleElement.HasAttribute("borderw")) m_BorderWidth=System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("borderw")); m_CornerType=eCornerType.Square; if(styleElement.HasAttribute("cornertype")) m_CornerType=(eCornerType)System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("cornertype")); m_CornerDiameter=DEFAULT_CORNER_DIAMETER; if(styleElement.HasAttribute("cornerdiameter")) m_CornerDiameter=System.Xml.XmlConvert.ToInt32(styleElement.GetAttribute("cornerdiameter")); }
internal void ApplyStyle(ItemStyle style) { if(style==null) return; m_Alignment=style.Alignment; if(!style.BackColor1.IsEmpty) m_BackColor1=style.BackColor1; if(!style.BackColor2.IsEmpty) m_BackColor2=style.BackColor2; if(style.BackgroundImage!=null) m_BackgroundImage=style.BackgroundImage; if(style.BackgroundImageAlpha!=255) m_BackgroundImageAlpha=style.BackgroundImageAlpha; if(style.BackgroundImagePosition!=eBackgroundImagePosition.Stretch) m_BackgroundImagePosition=style.BackgroundImagePosition; if(style.Border!=eBorderType.None) m_Border=style.Border; if(style.BorderDashStyle!=DashStyle.Solid) m_BorderDashStyle=style.BorderDashStyle; if(!style.BorderColor.IsEmpty) m_BorderColor=style.BorderColor; if(style.BorderSide!=DEFAULT_BORDERSIDE) m_BorderSide=style.BorderSide; if(style.BorderWidth!=1) m_BorderWidth=style.BorderWidth; if(style.Font!=null) m_Font=style.Font; if(!style.ForeColor.IsEmpty) m_ForeColor=style.ForeColor; if(style.LineAlignment!=StringAlignment.Center) m_LineAlignment=style.LineAlignment; if(style.TextTrimming!=StringTrimming.EllipsisCharacter) m_TextTrimming=style.TextTrimming; if(style.WordWrap!=false) m_WordWrap=style.WordWrap; if(style.MarginBottom!=0) m_MarginBottom=style.MarginBottom; if(style.MarginLeft!=0) m_MarginLeft=style.MarginLeft; if(style.MarginRight!=0) m_MarginRight=style.MarginRight; if(style.MarginTop!=0) m_MarginTop=style.MarginTop; if(style.CornerType!=eCornerType.Square) m_CornerType=style.CornerType; if(style.CornerDiameter!=DEFAULT_CORNER_DIAMETER) m_CornerDiameter=style.CornerDiameter; if (style.VerticalText) m_VerticalText = style.VerticalText; if (!style.UseMnemonic) _UseMnemonic = style.UseMnemonic; }
private void SetRegion(bool bResize) { if(bResize || m_CurrentCornerType!=m_Style.CornerType || m_CornerDiameter!=m_Style.CornerDiameter) { m_CurrentCornerType=m_Style.CornerType; m_CornerDiameter=m_Style.CornerDiameter; if(m_Style!=null && !(DrawThemedPane && BarFunctions.ThemedOS) && m_Style.CornerType!=eCornerType.Square) { this.Region=m_Style.GetRegion(this.ClientRectangle); } else this.Region=null; } }
private void SetRegion(bool bResize) { if (!CanSetRegion) return; ElementStyle style = GetStyle(); if (bResize || m_CurrentCornerType != style.CornerType || m_CornerDiameter != style.CornerDiameter) { m_CurrentCornerType = style.CornerType; m_CornerDiameter = style.CornerDiameter; if (style != null && !(DrawThemedPane && BarFunctions.ThemedOS) && style.CornerType != eCornerType.Square) { this.Region = ElementStyleDisplay.GetStyleRegion(new ElementStyleDisplayInfo(style, null, new Rectangle(0,0,this.Width, this.Height))); } else this.Region = null; } }