ImageCreator.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / 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.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK