Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / Drawing / System / Drawing / Design / ImageEditor.cs / 1 / ImageEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Drawing.Design { using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Drawing; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Windows.Forms; using System.Windows.Forms.ComponentModel; using System.Windows.Forms.Design; ////// /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] public class ImageEditor : UITypeEditor { internal static Type[] imageExtenders = new Type[] { typeof(BitmapEditor), /*gpr typeof(Icon),*/ typeof(MetafileEditor)}; internal FileDialog fileDialog; // VSWhidbey 95227: accessor needed into the static field so that derived classes // can implement a different list of supported image types. [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. protected virtual Type[] GetImageExtenders() { return imageExtenders; } ///Provides an editor for visually picking an image. ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1818:DoNotConcatenateStringsInsideLoops")] protected static string CreateExtensionsString(string[] extensions, string sep) { if (extensions == null || extensions.Length == 0) return null; string text = null; for (int i = 0; i < extensions.Length - 1; i++) text = text + "*." + extensions[i] + sep; text = text + "*." + extensions[extensions.Length-1]; return text; } ///[To be supplied.] ////// /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] // previously shipped this way. Would be a breaking change. protected static string CreateFilterEntry(ImageEditor e) { string desc = e.GetFileDialogDescription(); string exts = CreateExtensionsString(e.GetExtensions(),","); string extsSemis = CreateExtensionsString(e.GetExtensions(),";"); return desc + "(" + exts + ")|" + extsSemis; } ///[To be supplied.] ////// /// Edits the given object value using the editor style provided by /// GetEditorStyle. A service provider is provided so that any /// required editing services can be obtained. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1818:DoNotConcatenateStringsInsideLoops")] [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (provider != null) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { if (fileDialog == null) { fileDialog = new OpenFileDialog(); string filter = CreateFilterEntry(this); for (int i = 0; i < GetImageExtenders().Length; i++) { ImageEditor e = (ImageEditor) Activator.CreateInstance(GetImageExtenders()[i], BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, null, null); //.CreateInstance(); Type myClass = this.GetType(); Type editorClass = e.GetType(); if (!myClass.Equals(editorClass) && e != null && myClass.IsInstanceOfType(e)) filter += "|" + CreateFilterEntry(e); } fileDialog.Filter = filter; } IntPtr hwndFocus = UnsafeNativeMethods.GetFocus(); try { if (fileDialog.ShowDialog() == DialogResult.OK) { FileStream file = new FileStream(fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.Read); value = LoadFromStream(file); } } finally { if (hwndFocus != IntPtr.Zero) { UnsafeNativeMethods.SetFocus(new HandleRef(null, hwndFocus)); } } } } return value; } ////// /// Retrieves the editing style of the Edit method. If the method /// is not supported, this will return None. /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.Modal; } ////// /// protected virtual string GetFileDialogDescription() { return SR.GetString(SR.imageFileDescription); } ///[To be supplied.] ////// /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. protected virtual string[] GetExtensions() { // We should probably smash them together... ArrayList list = new ArrayList(); for (int i = 0; i < GetImageExtenders().Length; i++) { ImageEditor e = (ImageEditor) Activator.CreateInstance(GetImageExtenders()[i], BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.CreateInstance, null, null, null); //.CreateInstance(); if (!e.GetType().Equals(typeof(ImageEditor))) list.AddRange(new ArrayList(e.GetExtensions())); } return(string[]) list.ToArray(typeof(string)); } ///[To be supplied.] ////// /// Determines if this editor supports the painting of a representation /// of an object's value. /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. public override bool GetPaintValueSupported(ITypeDescriptorContext context) { return true; } ////// /// [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. protected virtual Image LoadFromStream(Stream stream) { //Copy the original stream to a buffer, then wrap a //memory stream around it. This way we can avoid //locking the file byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, (int)stream.Length); MemoryStream ms = new MemoryStream(buffer); return Image.FromStream(ms); } ///[To be supplied.] ////// /// [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers")] //Benign code [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] // everything in this assembly is full trust. public override void PaintValue(PaintValueEventArgs e) { Image image = e.Value as Image; if (image != null) { Rectangle r = e.Bounds; r.Width --; r.Height--; e.Graphics.DrawRectangle(SystemPens.WindowFrame, r); e.Graphics.DrawImage(image, e.Bounds); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved./// Paints a representative value of the given object to the provided /// canvas. Painting should be done within the boundaries of the /// provided rectangle. /// ///
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SpecialTypeDataContract.cs
- MessageQueueCriteria.cs
- StickyNoteHelper.cs
- IPGlobalProperties.cs
- NameValueConfigurationCollection.cs
- PostBackTrigger.cs
- XhtmlBasicListAdapter.cs
- FragmentNavigationEventArgs.cs
- _NtlmClient.cs
- ComponentManagerBroker.cs
- SerialPinChanges.cs
- OverlappedAsyncResult.cs
- InputReport.cs
- FederatedMessageSecurityOverHttpElement.cs
- DataProviderNameConverter.cs
- UnmanagedBitmapWrapper.cs
- httpstaticobjectscollection.cs
- EncodingInfo.cs
- ConstraintEnumerator.cs
- CqlWriter.cs
- SmiEventStream.cs
- WebHttpBinding.cs
- TableItemPatternIdentifiers.cs
- StreamProxy.cs
- AccessText.cs
- CanExecuteRoutedEventArgs.cs
- SafeCryptoHandles.cs
- DocumentGridPage.cs
- NetSectionGroup.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- SpellerStatusTable.cs
- HttpCookie.cs
- RTLAwareMessageBox.cs
- EntityDataSourceView.cs
- Stylesheet.cs
- Opcode.cs
- UriSection.cs
- PrePostDescendentsWalker.cs
- ExpressionEvaluator.cs
- TextBoxBase.cs
- TargetParameterCountException.cs
- IdentitySection.cs
- ExtensionQuery.cs
- ReadOnlyObservableCollection.cs
- COSERVERINFO.cs
- Processor.cs
- EnterpriseServicesHelper.cs
- SubMenuStyleCollectionEditor.cs
- PrivilegedConfigurationManager.cs
- DynamicValueConverter.cs
- HttpDebugHandler.cs
- EntityEntry.cs
- ServiceDescriptionReflector.cs
- TextEditorSpelling.cs
- DesignTimeTemplateParser.cs
- TokenFactoryFactory.cs
- Line.cs
- TraceLevelHelper.cs
- ObjectDataSourceFilteringEventArgs.cs
- CodeDomLoader.cs
- HitTestFilterBehavior.cs
- UrlAuthorizationModule.cs
- NullableIntAverageAggregationOperator.cs
- PtsPage.cs
- VirtualDirectoryMappingCollection.cs
- SoapAttributeAttribute.cs
- DataTableClearEvent.cs
- SystemWebCachingSectionGroup.cs
- PropertyGeneratedEventArgs.cs
- EncoderReplacementFallback.cs
- ExcludePathInfo.cs
- LocalizationComments.cs
- TraceHandlerErrorFormatter.cs
- DataGridViewElement.cs
- SHA512Managed.cs
- StorageMappingItemCollection.cs
- ConsoleKeyInfo.cs
- SqlCommandSet.cs
- __Filters.cs
- Effect.cs
- OleDbEnumerator.cs
- LinkLabel.cs
- TypefaceMetricsCache.cs
- TypeContext.cs
- CompiledRegexRunner.cs
- Bitmap.cs
- ProviderConnectionPointCollection.cs
- ApplicationServiceHelper.cs
- TextBox.cs
- TrustManagerMoreInformation.cs
- SystemColors.cs
- SafeBitVector32.cs
- LingerOption.cs
- Renderer.cs
- ProviderSettings.cs
- FontSizeConverter.cs
- InputEventArgs.cs
- InvalidAsynchronousStateException.cs
- ConfigXmlReader.cs
- AdobeCFFWrapper.cs