Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / Activities / Design / GradientPanel.cs / 1305376 / GradientPanel.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Workflow.Activities.Design { using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; internal partial class GradientPanel : Panel { protected Rectangle frameRect; private Color baseColor; private Color borderColor; private bool dropShadow; int glossHeight; private bool glossy; private Color lightingColor; private int radius; public GradientPanel() { BaseColor = Color.FromArgb(255, 255, 255, 255); LightingColor = Color.FromArgb(255, 176, 186, 196); Radius = 7; this.DoubleBuffered = true; } public Color BaseColor { get { return baseColor; } set { baseColor = value; } } public Color BorderColor { get { return borderColor; } set { borderColor = value; } } public bool DropShadow { get { return dropShadow; } set { dropShadow = value; } } public bool Glossy { get { return glossy; } set { glossy = value; } } public Color LightingColor { get { return lightingColor; } set { lightingColor = value; } } public int Radius { get { return radius; } set { radius = value; } } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); this.SuspendLayout(); e.Graphics.SmoothingMode = SmoothingMode.HighQuality; if (DropShadow) { frameRect = new Rectangle(6, 0, this.Size.Width - 14, this.Size.Height - 8); } else { frameRect = new Rectangle(0, 0, this.Size.Width - 1, this.Size.Height - 1); } frameRect.X -= Margin.Left; frameRect.Y -= Margin.Top; frameRect.Width += Margin.Left + Margin.Right; frameRect.Height += Margin.Top + Margin.Bottom; Rectangle shadowRect = new Rectangle(frameRect.X, frameRect.Y + 6, frameRect.Width, frameRect.Height - 5); glossHeight = frameRect.Height / 3; Brush glossBrush = new LinearGradientBrush(new Point(frameRect.Left, frameRect.Top), new Point(frameRect.Left, frameRect.Top + glossHeight + 1), Color.FromArgb(120, 255, 255, 255), Color.FromArgb(60, 255, 255, 255)); // SolidBrush(Color.FromArgb(32, 255, 255, 255)); Brush frameBrush = new LinearGradientBrush(new Point(frameRect.Left, frameRect.Top), new Point(frameRect.Left, frameRect.Bottom), BaseColor, LightingColor); Graphics outputGraphics = e.Graphics; if (DropShadow) { shadowRect = DropRoundedRectangleShadow(shadowRect, outputGraphics); } e.Graphics.FillPath(frameBrush, RoundedRect(frameRect)); if (Glossy) { e.Graphics.FillPath(glossBrush, RoundedRectTopHalf(frameRect)); } e.Graphics.DrawPath(new Pen(this.BorderColor), RoundedRect(frameRect)); this.ResumeLayout(); } private Rectangle DropRoundedRectangleShadow(Rectangle shadowRect, Graphics outputGraphics) { int shadowIntensity = 1; using (Pen shadowPen = new Pen(Color.FromArgb(shadowIntensity, 0, 0, 0))) { shadowPen.Width = 16; for (int i = 0; i < 8; i++) { outputGraphics.DrawPath(shadowPen, RoundedRect(shadowRect)); shadowPen.Color = Color.FromArgb(shadowIntensity - 1, 0, 0, 0); shadowIntensity += 8; shadowPen.Width = shadowPen.Width - 2;; } return shadowRect; } } private GraphicsPath RoundedRect(Rectangle frame) { GraphicsPath path = new GraphicsPath(); if (Radius < 1) { path.AddRectangle(frame); return path; } int diameter = Radius * 2; Rectangle arc = new Rectangle(frame.Left, frame.Top, diameter, diameter); path.AddArc(arc, 180, 90); arc.X = frame.Right - diameter; path.AddArc(arc, 270, 90); arc.Y = frame.Bottom - diameter; path.AddArc(arc, 0, 90); arc.X = frame.Left; path.AddArc(arc, 90, 90); path.CloseFigure(); return path; } private GraphicsPath RoundedRectTopHalf(Rectangle frame) { GraphicsPath path = new GraphicsPath(); int diameter = Radius * 2; Rectangle arc = new Rectangle(frame.Left, frame.Top, diameter, diameter); path.AddArc(arc, 180, 90); arc.X = frame.Right - diameter; path.AddArc(arc, 270, 90); path.AddLine(new Point(frame.Right, frame.Top + glossHeight), new Point(frame.Left, frame.Top + glossHeight)); path.CloseFigure(); return path; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebPartDisplayModeCancelEventArgs.cs
- PropertyDescriptorComparer.cs
- UrlAuthFailedErrorFormatter.cs
- InputMethodStateChangeEventArgs.cs
- UIServiceHelper.cs
- log.cs
- EventHandlersStore.cs
- DataGridBoundColumn.cs
- ErrorWrapper.cs
- BinarySerializer.cs
- XsltInput.cs
- PropertyStore.cs
- DragEventArgs.cs
- DemultiplexingDispatchMessageFormatter.cs
- FileEnumerator.cs
- CodeDomSerializer.cs
- Function.cs
- Peer.cs
- TableAdapterManagerGenerator.cs
- SkinBuilder.cs
- DerivedKeySecurityToken.cs
- SspiSafeHandles.cs
- LinearGradientBrush.cs
- TrackingRecordPreFilter.cs
- ApplicationSecurityManager.cs
- MetabaseSettings.cs
- DockPanel.cs
- DragAssistanceManager.cs
- BitmapPalettes.cs
- HtmlTextBoxAdapter.cs
- CursorConverter.cs
- BaseCAMarshaler.cs
- CaseInsensitiveOrdinalStringComparer.cs
- MultilineStringConverter.cs
- SqlDeflator.cs
- CodeGenerator.cs
- DrawingContextWalker.cs
- ReaderWriterLockWrapper.cs
- GenericRootAutomationPeer.cs
- MessageHeader.cs
- StaticSiteMapProvider.cs
- TextFormatterContext.cs
- DataGridViewRowStateChangedEventArgs.cs
- Version.cs
- HtmlPhoneCallAdapter.cs
- XmlSecureResolver.cs
- XmlSerializerVersionAttribute.cs
- PeerNameRecord.cs
- SocketInformation.cs
- LineProperties.cs
- XPathArrayIterator.cs
- WebEncodingValidator.cs
- XmlObjectSerializerWriteContextComplex.cs
- Parser.cs
- VersionPair.cs
- Literal.cs
- _AutoWebProxyScriptEngine.cs
- DecimalAnimation.cs
- CodeIdentifiers.cs
- GridViewColumn.cs
- NavigationCommands.cs
- ButtonChrome.cs
- SQLBytesStorage.cs
- TableItemPattern.cs
- Mapping.cs
- TextSpanModifier.cs
- SiteMapDataSourceView.cs
- EventDescriptorCollection.cs
- AnnotationAuthorChangedEventArgs.cs
- ServicesExceptionNotHandledEventArgs.cs
- Directory.cs
- CachedBitmap.cs
- TextDecorationCollection.cs
- CodeAssignStatement.cs
- UnsafeNetInfoNativeMethods.cs
- SoapClientMessage.cs
- ImageFormat.cs
- Themes.cs
- EntityDataSourceViewSchema.cs
- ToolStripDropDownDesigner.cs
- XmlChildNodes.cs
- ListViewItemSelectionChangedEvent.cs
- TextTreeUndo.cs
- HtmlControlPersistable.cs
- SudsParser.cs
- RadioButtonPopupAdapter.cs
- SemanticResultValue.cs
- SingleConverter.cs
- RegionInfo.cs
- Utils.cs
- MemberPath.cs
- WebPartConnectionsCancelVerb.cs
- SettingsSection.cs
- XmlSchemaSimpleContentRestriction.cs
- SystemIPv6InterfaceProperties.cs
- CodeGenerator.cs
- WindowsStartMenu.cs
- MDIWindowDialog.cs
- VScrollProperties.cs
- TextChange.cs