Baixe o código-fonte de exemplo deste artigo
Antes de ler este artigo, é melhor entrar em contato com o seguinte
GDI+
Gerar componentes usando ATL
STL
Componentes de uso de ASP
aspImage é um componente muito bom no site ServerObjects. Ele nos permite usar o Asp para implementar muitas funções de processamento gráfico. Se precisar de informações mais detalhadas, você pode visitar seu site oficial, que não será discutido aqui. Vamos falar sobre como usar este componente. O que vamos falar aqui é como implementar este tipo de componente. Claro, usar GDI+ no exemplo a seguir não é a única maneira de implementar o processamento gráfico de componentes. outros métodos você mesmo.
A seguir está o processo de implementação
. Primeiro, use o assistente Visual C++ para criar um projeto ATL.
2. Em seguida, adicione uma classe de interface do componente ATL Active Server Page
3. Gere uma classe chamada AspPicCom e selecione o objeto interno ASP Response
4. Adicione propriedades e métodos à interface IAspPicCom, conforme mostrado na tabela a seguir:
nome | categoria | significado | método de chamada | |
FontName | atributo | nomeda fonte | tipo de string Como usar .FontName = "宋体" | |
Propriedade | FontSize | tamanho da fonte | inteiro Como usar .FontSize=40 | |
Formatação | do tipo de fonte | da propriedade | FontStyle | Regular = 0, Negrito = 1, Itálico = 2, NegritoItálico = 3, Sublinhado = 4, Riscado = 8 Como usar .FontStyle=8 |
Tipo de string | de formato gráfico | da propriedade | ImgFormat | imagem/gif imagem/jpeg imagem/bmp ... Como usar .ImgFormat="image/gif" |
O método | SetFontColor | define a cor da fonte | e como usá-la .SetFontColor 255,3,242,4 Os números acima representam Alfa, Vermelho, Verde e Azul respectivamente. | |
Como usar | o | método | SetBackColorpara definir a cor de fundo da fonte. | .SetBackColor 255,3,242,4 Os números acima representam Alfa, Vermelho, Verde e Azul. |
método | ShowPic | envia a imagem ao cliente | . .ShowPic |
#include <Gdiplus.h> usando o namespace Gdiplus;
e precisa se conectar à biblioteca GDIPlus.lib
#pragma comment(lib, "gdiplus.lib")
2. Declare ULONG_PTR gdiplusToken como uma variável de membro global ou interna da classe.
3. Adicione à função FinalConstruct da classe de implementação:
GdiplusStartupInput gdiplusStartupInput; //Inicializa GDI+GdiplusStartup(&
gdiplusToken
, &gdiplusStartupInput, NULL);
4.
Adicione:GdiplusShutdown(gdiplusToken);
Nota: Em relação ao uso de GDI+, você pode encontrar referência no seguinte URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdi+/gdi+.asp
http ://www .codeproject.com/vcpp/gdiplus/
6 A próxima etapa é implementar as propriedades e métodos listados em 4. Um trecho de código para o método ShowPic está listado abaixo. Para outros códigos, consulte o
bitmapdo código-fonte.
bitmap(1,1,PixelFormat48bppRGB); Gráficos gráficos(&bitmap); USES_CONVERSION; Fonte da fonte (OLE2CW(m_bstrFontName),(float)m_fFontSize,m_nFontStyle,
PontoUnidade,NULL); Origem do PontoF(0, 0); Formato StringFormat; format.SetAlignment(StringAlignmentCenter); RectF vinculadoRect; gráficos.MeasureString(OLE2CW(m_bstrText),m_bstrText.Length(),
&fonte, origem, &formato, &boundRect); int nLargura = (int)boundRect.Width; int nHeight = (int)boundRect.Height; Bitmap bm(nLargura,nAltura,PixelFormat48bppRGB); Gráficos* g=Gráficos::FromImage (&bm); vinculadoRect.Width=boundRect.Width*2; SolidBrush solidbrush(m_cBackground); g->FillRectangle(&solidbrush,boundRect); SolidBrush SolidFont(m_cFontColor); PontoF fPonto(0,0); g->DrawString(OLE2CW(m_bstrText),m_bstrText.Length(),
&font,fPoint,&SolidFont); resultado interno; CLSID pngClsid; resultado = GetCodecClsid(OLE2W(m_btrImgFormat ), &pngClsid); HRESULT horas; HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, 0); CComPtr<IStream> pStm; if (FAILED(hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) )) return hr; bm.Save(pStm,&pngClsid,NULL); ULONG cElementos = (ULONG)GlobalSize(hGlobal); LPBYTE lpData = (LPBYTE)GlobalLock(hGlobal); SAFEARRAY* pArray = SafeArrayCreateVector(VT_UI1, 0, cElements); for (UINT iElement = 0; iElement <cElements; iElement++) { idx longo = iElement; SafeArrayPutElement(pArray, &idx, ((LPBYTE)lpData) + iElement); } GlobalUnlock(hGlobal); CComVariant vBytes; vBytes.vt = VT_ARRAY |VT_UI1; vBytes.parray = pArray; m_piResponse->Limpar(); m_piResponse->put_ContentType (m_btrImgFormat); m_piResponse->BinaryWrite(vBytes); m_piResponse->Fim();
7. Agora que a implementação do componente foi concluída, escrevemos um ASP para testar o seguinte componente
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <corpo> <% definir Imagem=Server.CreateObject("AspPic.AspPicCom") picture.Text="Você pode me ver? Sou de www.goodassister.com!" picture.FontName = "Heold" imagem.FontSize= 40 imagem.ImgFormat = "imagem/jpeg" imagem.FontStyle= 1 Picture.SetFontColor 255,3,242,4 '' representa Alfa, Vermelho, Verde, Azul Picture.SetBackColor 10,243,42,54 '' representa Alfa, Vermelho, Verde, Azul Imagem.MostrarPic definir imagem = nada %> </body> </html>
Nota: Registre o componente regsvr32 AspPic.dll antes de usar
Abra esta página da web ASP, você verá a seguinte imagem
Agora as ideias específicas para implementar o aspImage estão concluídas. Agora, se precisar de mais efeitos, você mesmo pode enriquecer este componente.
Digressão: Este tipo de componente tem uma ampla gama de usos. Por exemplo, quando yahoo.com se registra como membro, gráfico. palavras serão exibidas para evitar que o computador se registre automaticamente, pois é ineficiente e difícil para os computadores reconhecerem texto em imagens. Esse tipo de componente é mais aplicado à geração de gráficos, como histogramas, gráficos de pizza, gráficos de formas de onda,. etc.
É isso neste artigo. Se você tiver algum comentário ou achar que cometi um erro, por favor me diga.
E-mail:[email protected]