Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / Util / ImageCreator.cs / 1305376 / ImageCreator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.MobileControls.Util { using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.IO; [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal sealed class ImageCreator { const String _fontFamily = "Tahoma"; // default font used for the // title and error message private static int GetHeight( String text, Font font, int width ) { // THIS----S: I need a bitmap to get a graphics object to measure // the string, but I can not create the bitmap I intend to return // until I know how big it needs to be... using(Bitmap bmp = new Bitmap(1,1)) { using(Graphics g = Graphics.FromImage(bmp)) { SizeF size = new SizeF(width, 0); size = g.MeasureString(text, font, size); return (int) (size.Height + 1); }} // using bmp, g } internal static void CreateBackgroundImage( ref TemporaryBitmapFile bmpFile, String controlID, String title, String message, bool infoMode, int controlWidth ) { // Really, anything this small is not practically going to // show readable text. Truncate instead of trying to display // the string vertically. if(controlWidth < 75) { controlWidth = 75; } Bitmap errorIcon = infoMode? GenericUI.InfoIcon : GenericUI.ErrorIcon; bool showMessage = message != null && message.Length != 0; bool showTitle = (title != null && title.Length != 0) || (controlID != null && controlID.Length != 0); Debug.Assert(showMessage || showTitle); // using( Font normalFont = new Font(_fontFamily, 8, FontStyle.Regular), boldFont = new Font(normalFont.FontFamily, 8, FontStyle.Bold) ) { using( Brush controlTextBrush = new SolidBrush(SystemColors.ControlText), controlDarkBrush = new SolidBrush(SystemColors.ControlDark), controlBrush = new SolidBrush(SystemColors.Control), windowBrush = new SolidBrush(SystemColors.Window) ) { using( Pen controlDarkPen = new Pen(SystemColors.ControlDark), windowPen = new Pen(SystemColors.Window) ) { int barHeight = 0; if(showTitle) { // We do not measure the height of the real title because // we inted to truncate rather than wrap. barHeight = GetHeight( "'", normalFont, (controlWidth - 30) ) + 6; } int messageHeight = 0; if(showMessage) { int textHeight = GetHeight( message, normalFont, (controlWidth - 30) ); messageHeight = (textHeight < (errorIcon.Height + 6)) ? (errorIcon.Height + 6) : textHeight + 3; } int width = 500; // normally only 300px visible. int height = barHeight + messageHeight; Bitmap bitmap = new Bitmap(width, height); using(Graphics g = Graphics.FromImage(bitmap)) { if (showTitle) { // The rectangle area g.FillRectangle(controlBrush, 0, 0, width, barHeight); // The gray line below the controlID g.DrawLine(controlDarkPen, 0, barHeight - 1, width, barHeight - 1); // Draw the text "controlTypeName - controlID" g.DrawString(controlID, boldFont, controlTextBrush, 2, 2); if(title != null && title.Length > 0) { int strPelLen = (int) g.MeasureString(controlID, boldFont).Width; g.DrawString(" - " + title, normalFont, controlTextBrush, 4 + strPelLen, 2); } } if (showMessage) { // The transparent line between controlID and errormessage. g.DrawLine(windowPen, 0, barHeight, width, barHeight); // The message rectangle area g.FillRectangle(controlDarkBrush, 0, barHeight + 1, width, messageHeight - 1); // Draw the message text g.DrawString(message, normalFont, windowBrush, new RectangleF(20, barHeight + 1, controlWidth - 30, messageHeight - 1)); // Draw the icon g.DrawImage(errorIcon, 2, barHeight + 3); } if(bmpFile == null) { bmpFile = new TemporaryBitmapFile(bitmap); } else { bmpFile.UnderlyingBitmap = bitmap; } } // using g }}} // using Fonts, Brushes, and Pens } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.MobileControls.Util { using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.IO; [ System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode) ] [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")] internal sealed class ImageCreator { const String _fontFamily = "Tahoma"; // default font used for the // title and error message private static int GetHeight( String text, Font font, int width ) { // THIS----S: I need a bitmap to get a graphics object to measure // the string, but I can not create the bitmap I intend to return // until I know how big it needs to be... using(Bitmap bmp = new Bitmap(1,1)) { using(Graphics g = Graphics.FromImage(bmp)) { SizeF size = new SizeF(width, 0); size = g.MeasureString(text, font, size); return (int) (size.Height + 1); }} // using bmp, g } internal static void CreateBackgroundImage( ref TemporaryBitmapFile bmpFile, String controlID, String title, String message, bool infoMode, int controlWidth ) { // Really, anything this small is not practically going to // show readable text. Truncate instead of trying to display // the string vertically. if(controlWidth < 75) { controlWidth = 75; } Bitmap errorIcon = infoMode? GenericUI.InfoIcon : GenericUI.ErrorIcon; bool showMessage = message != null && message.Length != 0; bool showTitle = (title != null && title.Length != 0) || (controlID != null && controlID.Length != 0); Debug.Assert(showMessage || showTitle); // using( Font normalFont = new Font(_fontFamily, 8, FontStyle.Regular), boldFont = new Font(normalFont.FontFamily, 8, FontStyle.Bold) ) { using( Brush controlTextBrush = new SolidBrush(SystemColors.ControlText), controlDarkBrush = new SolidBrush(SystemColors.ControlDark), controlBrush = new SolidBrush(SystemColors.Control), windowBrush = new SolidBrush(SystemColors.Window) ) { using( Pen controlDarkPen = new Pen(SystemColors.ControlDark), windowPen = new Pen(SystemColors.Window) ) { int barHeight = 0; if(showTitle) { // We do not measure the height of the real title because // we inted to truncate rather than wrap. barHeight = GetHeight( "'", normalFont, (controlWidth - 30) ) + 6; } int messageHeight = 0; if(showMessage) { int textHeight = GetHeight( message, normalFont, (controlWidth - 30) ); messageHeight = (textHeight < (errorIcon.Height + 6)) ? (errorIcon.Height + 6) : textHeight + 3; } int width = 500; // normally only 300px visible. int height = barHeight + messageHeight; Bitmap bitmap = new Bitmap(width, height); using(Graphics g = Graphics.FromImage(bitmap)) { if (showTitle) { // The rectangle area g.FillRectangle(controlBrush, 0, 0, width, barHeight); // The gray line below the controlID g.DrawLine(controlDarkPen, 0, barHeight - 1, width, barHeight - 1); // Draw the text "controlTypeName - controlID" g.DrawString(controlID, boldFont, controlTextBrush, 2, 2); if(title != null && title.Length > 0) { int strPelLen = (int) g.MeasureString(controlID, boldFont).Width; g.DrawString(" - " + title, normalFont, controlTextBrush, 4 + strPelLen, 2); } } if (showMessage) { // The transparent line between controlID and errormessage. g.DrawLine(windowPen, 0, barHeight, width, barHeight); // The message rectangle area g.FillRectangle(controlDarkBrush, 0, barHeight + 1, width, messageHeight - 1); // Draw the message text g.DrawString(message, normalFont, windowBrush, new RectangleF(20, barHeight + 1, controlWidth - 30, messageHeight - 1)); // Draw the icon g.DrawImage(errorIcon, 2, barHeight + 3); } if(bmpFile == null) { bmpFile = new TemporaryBitmapFile(bitmap); } else { bmpFile.UnderlyingBitmap = bitmap; } } // using g }}} // using Fonts, Brushes, and Pens } } } // 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
- ToolStripGripRenderEventArgs.cs
- PathGeometry.cs
- Trace.cs
- ToolStripSplitStackLayout.cs
- DataGridViewCellStyleConverter.cs
- RSAProtectedConfigurationProvider.cs
- SafeNativeMethods.cs
- ScriptServiceAttribute.cs
- LicenseProviderAttribute.cs
- ApplicationFileCodeDomTreeGenerator.cs
- NavigationWindowAutomationPeer.cs
- CalloutQueueItem.cs
- LicFileLicenseProvider.cs
- QilUnary.cs
- KeyManager.cs
- SamlAssertion.cs
- Attributes.cs
- HtmlPhoneCallAdapter.cs
- TransformerInfo.cs
- SystemKeyConverter.cs
- InputChannelAcceptor.cs
- ValueUtilsSmi.cs
- RandomDelayQueuedSendsAsyncResult.cs
- ParallelTimeline.cs
- Adorner.cs
- TextRunTypographyProperties.cs
- PolyQuadraticBezierSegment.cs
- ClientConvert.cs
- OrderedHashRepartitionEnumerator.cs
- SessionStateContainer.cs
- ComplexLine.cs
- AutomationPropertyInfo.cs
- XmlUtilWriter.cs
- WorkflowTraceTransfer.cs
- AnnotationHelper.cs
- DynamicMethod.cs
- Size.cs
- ExpandCollapseProviderWrapper.cs
- AnnouncementClient.cs
- InvalidContentTypeException.cs
- CredentialCache.cs
- Hex.cs
- SafeBitVector32.cs
- ObjectSet.cs
- EntityClassGenerator.cs
- ItemList.cs
- __ConsoleStream.cs
- FormattedTextSymbols.cs
- WCFServiceClientProxyGenerator.cs
- OleDbReferenceCollection.cs
- DesignerVerbCollection.cs
- AnyReturnReader.cs
- WebEvents.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- TemplateKeyConverter.cs
- WS2007FederationHttpBinding.cs
- HashRepartitionEnumerator.cs
- SimpleBitVector32.cs
- BinaryObjectInfo.cs
- MarginCollapsingState.cs
- PartitionedDataSource.cs
- SHA256.cs
- SerializationBinder.cs
- XMLUtil.cs
- HeaderedItemsControl.cs
- cache.cs
- MulticastIPAddressInformationCollection.cs
- CompositeFontInfo.cs
- Variant.cs
- CertificateManager.cs
- CharacterMetricsDictionary.cs
- OptimalBreakSession.cs
- TraceListener.cs
- IgnoreDeviceFilterElement.cs
- _CacheStreams.cs
- Rectangle.cs
- CacheChildrenQuery.cs
- ProxyWebPartConnectionCollection.cs
- MarkupExtensionParser.cs
- DataGridPagerStyle.cs
- DesignerActionVerbList.cs
- DbConnectionPoolGroup.cs
- SafeBuffer.cs
- Utility.cs
- InvokeBinder.cs
- AddInStore.cs
- ColorAnimationUsingKeyFrames.cs
- ScrollPatternIdentifiers.cs
- FlowNode.cs
- ImageButton.cs
- OleDbReferenceCollection.cs
- recordstate.cs
- TimeSpanConverter.cs
- SecuritySessionFilter.cs
- ShimAsPublicXamlType.cs
- TypefaceMap.cs
- X509CertificateStore.cs
- ByteStreamMessageUtility.cs
- ParserOptions.cs
- Constraint.cs