Select the product you need help with
HOWTO: Crear imágenes personalizadas para comandos de complementos, botones y toolwindows de Visual Studio .NET.Id. de artículo: 555417 - Ver los productos a los que se aplica este artículo ResumenEn este artículo se describe cómo crear imágenes personalizadas para comandos de complementos, botones y toolwindows .NET. SíntomasEn este artículo se describe cómo crear imágenes personalizadas para comandos de complementos, botones y toolwindows .NET. Más informaciónHay al menos tres casos en los que deberá crear imágenes personalizadas, transparentes para sus funciones de complemento de Visual Studio . NET. Este Este artículo explica cómo hacerlo en cada caso: (A) Personalizado se imagina para comandos de complementos Al llamar a la función Commands.AddNamedCommand para crear un comando si transmite el valor Falso en el parámetro MSOButton (el 5th), a continuación, el comando utilizará una imagen personalizada en lugar de una imagen tomada de Microsoft Office. La imagen personalizada se especifica mediante el parámetro Bitmap (el sexto) que es un entero e indica el identificador de recurso del mapa de bits en un DLL satélite de deber crear utilizando Visual C++ (VS 2005 admite satélite administrado DLL pero para Visual Studio .NET 2002/2003, necesita utilizar un proyecto C++ para Win32). Los pasos son los siguientes: - Agregue un proyecto nuevo a su solución que selecciona proyectos de Visual C++, proyecto Win32, y dé un nombre tal como <MyAddinName UI.vcproj (casetas de interfaz de usuario para interfaz de usuario)> a ello. - En el asistente mostrado, seleccione Configuración de la aplicación, seleccione el radiobutton DLL y haga clic en el botón Finalizar. El proyecto nuevo se agrega a la solución. - Haga clic con el botón secundario en el nodo de carpeta Recursos de este proyecto nuevo y seleccione la opción para que "Agregue" "Agregar Resourceà". Un archivo denominado archivo ".rc <MyAddinName>" se agrega al nodo y un cuadro de diálogo "Agregar recurso" aparece. Seleccione Bitmap en la lista y haga clic en el botón "Nuevo". - Cambie las dimensiones del mapa de bits que utiliza la ventana Propiedades y que establece las propiedades Height y Width como 16. - Cambie (por ejemplo) el identificador del mapa de bits en la ventana Propiedades al valor 1. - Dibuje o pegue una imagen para su mapa de bits. Utilizar transparencia necesaria para usar un color especial : selecciona el color de color verde verde en el toolwindow Colores, hace clic en la "Imagen" en menú "Ajustar Colorsà" y del diálogo mostrado, escribe los valores rojos = 0 Green = 254 (no 255) Y Azul = 0. Puede utilizar este color ahora para rellenar las áreas transparentes. - Una vez que haya finalizado su mapa de bits, necesita cambiar la llamada a la función Commands.AddNamedCommand : transmite el valor Falso en el parámetro MSOButton (el 5th) y transmite el identificador del mapa de bits (1 en nuestro ejemplo) en el parámetro Bitmap (el sexto). - Genere el DLL y póngalo en una subcarpeta de su carpeta de complemento que nombra la subcarpeta a la configuración regional de Visual Studio. Para la versión en inglés, la configuración regional es 1033. Sólo debe informar Visual Studio .NET - en momento de que su complemento utiliza un DLL satélite. En la entrada de Registro, HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.0\Addins\<MyAddinName>.Connect (uso 7,0 para VS.NET 2002 y 7,1 para VS.NET 2003) agrega dos valores alfanuméricos: "SatelliteDLLName"" El nombre de su DLL satélite tal como <MyAddinName UI.dll> "SatelliteDLLPath" : la ruta su dll satélite que excluye la configuración regional (de modo que es realmente la ruta al complemento, no al satélite DLL). Después de todo esto, se creará sus comandos con una imagen personalizada, transparente. Si debe restablecer sus comandos de forma que se los vuelve a crear, puede abrir un Símbolo del sistema de Visual Studio .NET y escribir /setup devenv.exe. (B) Personalizado se imagina para botones de complementos sin un comando En el caso anterior, nosotros hemos visto cómo crear un comando con una imagen personalizada. Para crear botones, también CommandBarButtons creado en este comando (que utiliza el método Command.AddControl) mostrará aquella imagen personalizada otro usted a veces se necesita poder tener un comando detrás en su lugar, al utilizar el método CommandBar.Controls.Add. Para que establezca un personalizado transparente, en este caso, a imagen para el CommandBarControl creado, lo debe convertir en CommandBarButton y a continuación, se deben establecer sus propiedades Picture y Mask (en este orden): - La propiedad Picture se utiliza para especificar un objeto Stdole.IPictureDisp (una imagen COM no administrada) con su mapa. - La propiedad Mask se utiliza para especificar un objeto Stdole.IPictureDisp con un mapa (no un mapa 2-color de bits) de 16 color que utiliza el color blanco que establece las áreas transparentes de la imagen y el color negro que establece las áreas non-transparent. Puede obtener un objeto Stdole.IPictureDisp de un objeto administrado System.Drawing.Image con esta clase: ImageToPictureDispConverter Public Class Hereda System.Windows.Forms.AxHost New() Public Sub MyBase.new("{63109182-966B-4e3c-A8B2-8BC4A88D221C}") End Sub Función pública GetIPictureDispFromImage(ByVal objImage as System.Drawing.Image) como Stdole.IPictureDisp ObjPicture atenuado como Stdole.IPictureDisp ( objPicture stdole.IPictureDisp ) = CType(MyBase.GetIPictureDispFromPicture(objImage) Devuelva objPicture End Function End Class Utiliza esta clase como se explica a continuación: ObjImageToPictureDispConverter atenuado como ImageToPictureDispConverter Atenúe objImage System.Drawing.Image Como ObjIPictureDisp atenuado como Stdole.IPictureDisp objImage = (obtiene la imagen administrada de lugar) objImageToPictureDispConverter = ImageToPictureDispConverter() nuevo objIPictureDisp=objImageToPictureDispConverter.GetIPictureDispFromImage(objImage) objImageToPictureDispConverter.Dispose() Otro ways de crear un Stdole.IPictureDisp en lugar de utilizar una imagen administrada utiliza un archivo en disco o un recurso de mapa de bits de un DLL satélite. En el primer caso, utilizará esta función exportada por oleaut32.dll: _ <DllImport("oleaut32.dll", =CharSet.Unicode, =True, ="OleLoadPictureFile")> Sub compartido público OleLoadPictureFile(ByVal varFileName as object, ) (LpIPictureDisp As Object <MarshalAs(UnmanagedType.IDispatch) ByRef>) End Sub Como puede ver, la función recibe un nombre de archivo como primer parámetro y devuelve un IPictureDisp en el segundo parámetro. En el caso posterior, puede obtener un identificador de mapa de bits desde un recurso que controla DLL utilizando esta función: _ <DllImport("user32.dll", ="LoadBitmapA")> Función compartida pública LoadBitmap(ByVal hDLLInstance as IntPtr, ByVal iBitmapIndex as integer) como entero End Function Y utilizará a continuación la función OleCreatePictureIndirect para obtener un objeto IPictureDisp del identificador de mapa de bits: Estructura pública PICTDESC SizeOfStruct de Friend como entero PicType de Friend como entero Hbitmap Friend como IntPtr Hpal Friend como IntPtr De Friend relleno de Friend como entero Friend Sub New (hbmp ByVal, IntPtr Como) Me.SizeOfStruct = Marshal.SizeOf(me.GetType) Me.PicType = 1 Me.hbitmap = hbmp Me.hpal = IntPtr.zero Me.padding = 0 End Sub End Structure _ <DllImport("olepro32.dll", ="OleCreatePictureIndirect")> Función compartida pública OleCreatePictureIndirect(ByRef pPictDesc as PICTDESC, ByRef riid as guid, ) As Integer (fOwn ByVal como entero, ppvObj As Object <MarshalAs(UnmanagedType.IDispatch) ByRef>,) End Function Aquella función se utiliza de forma siguiente: Función pública GetIPictureDispFromBitmapHandle(ByVal hBitmapHandle as IntPtr) como Stdole.IPictureDisp ObjPicture atenuado como objeto ObjGuid atenuado como guid("00020400-0000-0000-C000-000000000046") nuevo IResult atenuado como entero TPICTDESC atenuado como PICTDESC(hBitmapHandle) nuevo iResult = OleCreatePictureIndirect (tPICTDESC, objGuid, 1 objPicture,) Devuelva CType(objPicture, Stdole.IPictureDisp) End Function Imágenes (C) personalizadas para toolwindows Cuando crea un toolwindow que utiliza el método Windows.CreateToolWindow y se vincula la ventana junto con otro toolwindows, su ficha muestra una imagen. De forma predeterminada, si no ha especificado una imagen, se muestra un logotipo de imagen de Visual Studio. Puede especificar una imagen personalizada que utiliza el método Window.SetTabPicture que recibe un objeto StdOle.IPictureDisp de poder obtener con cualquiera de método explicado arriba de un objeto. Debe llamar al método SetTabPicture antes de hacer visible la ventana de llamar a Window.Visible = True. Las áreas transparentes de la imagen deben utilizar el valor 0, 254, 0, de RGB tal y como se explicó antes. PropiedadesId. de artículo: 555417 - Última revisión: miércoles, 17 de agosto de 2005 - Versión: 1.0 La información de este artículo se refiere a:
Traducción automática AVISO: Gracias por utilizar el servicio de Traducción Automática. Este artículo ha sido traducido por un sistema informático sin ayuda humana (Machine Translation). Microsoft ofrece estos artículos a los usuarios que no comprendan el inglés, exclusivamente, con el fin de que puedan entenderlos más fácilmente. Microsoft no se hace responsable de la calidad lingüística de las traducciones ni de la calidad técnica de los contenidos de los artículos así como tampoco de cualesquiera problemas, directos o indirectos, que pudieran surgir como consecuencia de su utilización por los lectores. Haga clic aquí para ver el artículo original (en inglés): 555417
(http://support.microsoft.com/kb/555417/en-us/
)
RENUNCIA LEGAL DE COMMUNITY SOLUTIONS NI MICROSOFT IBÉRICA S.R.L. ("MICROSOFT") NI SUS RESPECTIVOS PROVEEDORES GARANTIZAN LA IDONEIDAD, FIABILIDAD NI EXACTITUD DE LA INFORMACIÓN Y LOS GRÁFICOS INCLUIDOS. TODA LA INFORMACIÓN Y LOS GRÁFICOS RELACIONADOS SE PROPORCIONAN "TAL CUAL" SIN GARANTÍA DE NINGUNA CLASE. SIN PERJUICIO DE NINGUNA GARANTÍA IMPUESTA POR CUALQUIER LEY DE APLICACIÓN OBLIGADA, MICROSOFT Y/O SUS RESPECTIVOS PROVEEDORES RENUNCIAN POR LA PRESENTE A TODA GARANTÍA Y CONDICIÓN RESPECTO A ESTA INFORMACIÓN Y LOS GRÁFICOS RELACIONADOS, INCLUIDA CUALQUIER GARANTÍA Y CONDICIÓN IMPLÍCITA DE COMERCIABILIDAD, IDONEIDAD PARA UN DETERMINADO FIN, ESFUERZO RAZONABLE, TITULARIDAD Y AUSENCIA DE INFRACCIÓN. USTED ADMITE EXPRESAMENTE QUE, SIN PERJUICIO DE LOS CASOS EN LOS CUALES LA LEY VIGENTE PROHÍBA LA EXCLUSIÓN DE RESPONSABILIDAD POR DAÑOS, BAJO NINGÚN CONCEPTO, NI MICROSOFT NI SUS PROVEEDORES ACEPTARÁN RESPONSABILIDAD ALGUNA POR DAÑOS DIRECTOS O INDIRECTOS DE CUALQUIER ÍNDOLE U ORIGEN (INCLUYENDO, ENTRE OTROS, LOS DAÑOS POR PÉRDIDA DE USO, INFORMACIÓN O BENEFICIOS) QUE SE DERIVEN O ESTÉN RELACIONADOS CON EL USO O INCAPACIDAD DE USO DE LA INFORMACIÓN Y LOS GRÁFICOS RELACIONADOS INCLUIDOS. |





Volver al principio








