Artigo: 555417 - Última revisão: quarta-feira, 17 de Agosto de 2005 - Revisão: 1.0 HOW TO: criar imagens personalizadas para Visual Studio.NET comandos os suplementos, botões e toolwindows.
SumárioEste artigo descreve como criar imagens personalizadas para.NET comandos os suplementos, botões e toolwindows. SintomasEste artigo descreve como criar imagens personalizadas para.NET comandos os suplementos, botões e toolwindows. Mais InformaçãoExistem pelo menos, três casos em que terá de criar imagens personalizado, transparente para as funcionalidades Suplemento do Visual Studio.NET. Este artigo explica como fazê-lo em cada caso: Personalizar A) imagens para comandos suplementos Quando chama a função Commands.AddNamedCommand para criar um comando, se você passar o valor false no parâmetro MSOButton (o 5th), o comando irá utilizar uma imagem personalizada em vez de uma imagem retirada do Microsoft Office. A imagem personalizada é especificada através o parâmetro de mapa de bits (o 6th) que é um número inteiro, e que indica o ID de recurso do mapa de bits num satélite DLL que tem de criar utilizando o Visual C++ (VS 2005 suporta satélite gerido DLLs, mas para Visual Studio.NET 2002 / 2003 necessita de utilizar um projecto Win32 C++). Os passos são os seguintes: Adicionar um novo projecto para a sua solução seleccionar projectos Visual C++, Projecto Win32 e atribua-lhe um nome, tal como <MyAddinName> UI.VCPROJ (UI Stands para interface de utilizador). Apresentadas pelo assistente que é apresentado, seleccione Definições da aplicação, seleccione o RadioButton DLL e clique no botão ' concluir '. O novo projecto é adicionado à solução. Clique com o botão direito do-rato no nó de pasta recursos deste novo projecto e seleccione ' Adicionar ', " Adicionar Resourceà ". Um ficheiro denominado ficheiro.rc <MyAddinName> " " é adicionado ao nó e um diálogo " Adicionar Recurso " aparece. Seleccione de mapa de bits a partir da lista e clique no botão ' novo '. Alterar as dimensões do mapa de bits utilizando a janela Propriedades e definindo as propriedades de altura e largura e 16. Alterar o ID do mapa de bits na janela de propriedades para o valor 1 (por exemplo). Desenhar ou colar uma imagem para o mapa de bits. Para utilizar a transparência que necessita para utilizar uma cor especial: seleccione a cor CAL verde no toolwindow cores, faça clique sobre a imagem ", Menu Colorsà ajustar " " " e na caixa de diálogo apresentada introduza os valores vermelho = 0, Verde = 254 (255 não!) e azul = 0. Pode utilizar agora esta cor de modo a preencher as áreas transparentes. Quando tiver terminado o mapa de bits, tem de alterar a chamada para a função Commands.AddNamedCommand: transmitir o valor false no parâmetro MSOButton (o 5th) e passar o ID do mapa de bits (1, no nosso exemplo) no parâmetro de mapa de bits (o 6th). Criar a DLL e colocá-lo numa subpasta da sua pasta suplemento atribuir nomes a subpasta com a região do Visual Studio. Para a versão em inglês, a região é 1033. Neste momento só é necessário informar o Visual Studio.NET que o suplemento utiliza um satélite DLL. Na entrada do registo HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.0\Addins\<MyAddinName>.Connect (Utilize 7.0 para o VS.NET 2002 e 7.1 para o VS.NET 2003) adicionar dois valores alfanuméricos: O nome a DLL de satélite, como, por exemplo, <MyAddinName> UI.dll SatelliteDLLName " " SatelliteDLLPath " ": o caminho a DLL de satélite, excluindo a região (por isso, é realmente o caminho para o suplemento, não para o satélite DLL). Depois disto, todos os seus comandos serão criados com uma imagem personalizada e transparente. Se necessitar de repor os comandos para que são criados de novo, pode abrir Studio visual numa linha de comandos.NET e escreva /SETUP devenv.exe. Imagens para os suplementos botões sem um comando personalizado B) No caso do anterior é ter visualizado como criar um comando com uma imagem personalizada. CommandBarButtons criados a partir deste comando (utilizando o método Command.AddControl) irá mostrar essa imagem personalizada também, mas que por vezes pode para criar botões Necessário esse don?t ter um comando atrás, utilizando o método CommandBar.Controls.Add em vez disso. Neste caso, para definir uma imagem personalizada, transparente para o CommandBarControl criado, é necessário convertê-lo para CommandBarButton e seguida, definir as respectivas propriedades de imagens e máscara (por esta ordem): A propriedade imagem é utilizada para especificar um objecto Stdole.IPictureDisp (uma imagem com não gerido) com o mapa de bits. A propriedade Mask é utilizada para especificar um objecto Stdole.IPictureDisp com um mapa de bits de 16 cores (Mapa não um bits 2 cores spot) que utiliza a cor branca para definir as áreas transparentes da imagem, e a cor preta para definir as áreas não transparentes. É possível obter um objecto Stdole.IPictureDisp a partir de um objecto System.Drawing.Image gerido utilizando esta classe: Classe ImageToPictureDispConverter pública Herda System.Windows.Forms.AxHost Sub New() pública MyBase.New("{63109182-966B-4e3c-A8B2-8BC4A88D221C}") End Sub Função como GetIPictureDispFromImage(ByVal objImage As System.Drawing.Image) stdole.IPictureDisp pública Dim objPicture como stdole.IPictureDisp objPicture = CType(MyBase.GetIPictureDispFromPicture(objImage), stdole.IPictureDisp) Devolver objPicture Função de fim Classe Final Que utilizar esta classe da seguinte forma: Dim objImageToPictureDispConverter ImageToPictureDispConverter como Dim objImage System.Drawing.Image como Dim objIPictureDisp como stdole.IPictureDisp objImage = (obter a imagem gerida de pontos) objImageToPictureDispConverter = New ImageToPictureDispConverter() objIPictureDisp=objImageToPictureDispConverter.GetIPictureDispFromImage(objImage) objImageToPictureDispConverter.Dispose() Outras formas de criar um Stdole.IPictureDisp em vez de utilizar uma imagem gerida está a utilizar um ficheiro no disco ou um recurso de mapa de bits a partir de uma DLL satélite. No caso do antigo teria de utilizar esta função exportada por Oleaut32.dll: < DllImport("oleaut32.dll", =CharSet.Unicode, =True, ="OleLoadPictureFile") > _ Pública partilhadas OleLoadPictureFile(ByVal varFileName As Object,_ sub LpIPictureDisp <MarshalAs(UnmanagedType.IDispatch)> byref como objecto) End Sub Como pode observar, a função recebe um nome de ficheiro como primeiro parâmetro, e ele retorna um IPictureDisp no segundo parâmetro. No caso posterior pode obter um identificador de mapa de bits de um recurso DLL processar a utilização desta função: < DllImport("user32.dll", ="LoadBitmapA") > _ Pública partilhadas função LoadBitmap(ByVal hDLLInstance As IntPtr, ByVal iBitmapIndex As Integer) As Integer Função de fim e em seguida, que seria utilize a função OleCreatePictureIndirect para obter um objecto IPictureDisp do identificador de mapa de bits: Estrutura pública PICTDESC Amigo SizeOfStruct como Número inteiro Amigo PicType como Número inteiro Amigo Hbitmap como IntPtr Amigo Hpal como IntPtr Amigo área como Número inteiro Amigo New(ByVal hBmp As IntPtr) sub Me.SizeOfStruct = Marshal.SizeOf(Me.GetType) Me.PicType = 1 Me.Hbitmap = hBmp Me.Hpal = IntPtr.Zero Me.Padding = 0 End Sub Estrutura de fim < DllImport("olepro32.dll", ="OleCreatePictureIndirect") > _ Partilhadas OleCreatePictureIndirect(ByRef pPictDesc As PICTDESC, ByRef riid As GUID, _ função pública As Integer fOwn ByVal As Integer, ppvObj <MarshalAs(UnmanagedType.IDispatch)> byref como objecto) Função de fim Essa função é utilizada da seguinte forma: Função como GetIPictureDispFromBitmapHandle(ByVal hBitmapHandle As IntPtr) stdole.IPictureDisp pública Dim objPicture como objecto Dim objGuid como novo GUID("00020400-0000-0000-C000-000000000046") IResult As Integer Dim Dim tPICTDESC como novo PICTDESC(hBitmapHandle) iResult = OleCreatePictureIndirect (tPICTDESC, objGuid, 1, objPicture) Devolver CType(objPicture, stdole.IPictureDisp) Função de fim Imagens C) personalizada para toolwindows Quando cria um toolwindow utilizando o método Windows.CreateToolWindow e a janela está ligada em conjunto com outros toolwindows, o respectivo separador mostra uma imagem. Por predefinição se não especificou uma imagem, um logótipo de imagem Visual Studio é mostrado. É possível especificar uma imagem personalizada utilizando o método Window.SetTabPicture, que recebe um objecto StdOle.IPictureDisp, que pode ser obtida com qualquer método descrito acima. Tem de chamar o método SetTabPicture antes de efectuar a janela visível chamar Window.Visible = True. As áreas transparentes da imagem tem de utilizar o valor RGB 254, 0, 0, tal como é que foi explicado antes. A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Pedíamos-lhe o favor de preencher o formulário existente no fundo desta página caso tenha encontrado erros neste artigo e tenha possibilidade de colaborar no processo de aperfeiçoamento desta ferramenta. Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 555417
(http://support.microsoft.com/kb/555417/en-us/
)
COMMUNITY SOLUTIONS CONTENT DISCLAIMERMICROSOFT CORPORATION AND/OR ITS RESPECTIVE SUPPLIERS MAKE NO REPRESENTATIONS ABOUT THE SUITABILITY, RELIABILITY, OR ACCURACY OF THE INFORMATION AND RELATED GRAPHICS CONTAINED HEREIN. ALL SUCH INFORMATION AND RELATED GRAPHICS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT AND/OR ITS RESPECTIVE SUPPLIERS HEREBY DISCLAIM ALL WARRANTIES AND CONDITIONS WITH REGARD TO THIS INFORMATION AND RELATED GRAPHICS, INCLUDING ALL IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, WORKMANLIKE EFFORT, TITLE AND NON-INFRINGEMENT. YOU SPECIFICALLY AGREE THAT IN NO EVENT SHALL MICROSOFT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, PUNITIVE, INCIDENTAL, SPECIAL, CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF USE, DATA OR PROFITS, ARISING OUT OF OR IN ANY WAY CONNECTED WITH THE USE OF OR INABILITY TO USE THE INFORMATION AND RELATED GRAPHICS CONTAINED HEREIN, WHETHER BASED ON CONTRACT, TORT, NEGLIGENCE, STRICT LIABILITY OR OTHERWISE, EVEN IF MICROSOFT OR ANY OF ITS SUPPLIERS HAS BEEN ADVISED OF THE POSSIBILITY OF DAMAGES. | Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções de Artigos |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Voltar ao topo