Descargue el código fuente de muestra de este artículo.
Antes de leer este artículo, lo mejor es tener contacto con el siguiente
GDI+
Generar componentes usando ATL
STL
Componentes de uso de ASP
aspImage es un componente muy bueno en el sitio ServerObjects. Nos permite usar Asp para implementar muchas funciones de procesamiento de gráficos. Si necesita información más detallada, puede visitar su sitio web oficial, que no se discutirá aquí. Hablemos sobre cómo usar este componente. De lo que vamos a hablar aquí es de cómo implementar este tipo de componente. Por supuesto, usar GDI + en el siguiente ejemplo no es la única forma de implementar el procesamiento de gráficos de componentes. otros métodos usted mismo.
El siguiente es el proceso de implementación
. Primero, use el asistente de Visual C++ para crear un proyecto ATL.
2. Luego agregue una clase de interfaz del componente ATL Active Server Page
3. Genere una clase llamada AspPicCom y seleccione el objeto interno ASP Respuesta
4. Agregue propiedades y métodos a la interfaz IAspPicCom, como se muestra en la siguiente tabla:
nombre | categoría | significado | método de llamada | |
atributo | FontName | nombrede fuente | tipo de cadena como usar .FontName="宋体" | |
Propiedad | FontSize | tamaño de fuente | entero como usar .FontSize=40 | |
Propiedad | FontStyle | configuración | del tipo de fuente | regulares = 0, Negrita = 1, cursiva = 2, Negrita y cursiva = 3, Subrayado = 4, Tachado = 8 como usar .FontStyle=8 |
Propiedad | ImgFormat | formato gráfico | tipo de cadena imagen/gif imagen/jpeg imagen/bmp ... como usar .ImgFormat="image/gif" | |
El método | SetFontColor | establece el color de fuente | y cómo usarlo .SetFontColor 255,3,242,4 Los números de arriba representan Alfa, Rojo, Verde y Azul respectivamente. | |
Cómo utilizar | elmétodo | SetBackColor | para configurar el color de fondo de la fuente. | .SetBackColor 255,3,242,4 Los números de arriba representan Alfa, Rojo, Verde y Azul. |
método | ShowPic | envía la imagen al cliente | . .ShowPic |
#incluir <Gdiplus.h> usando el espacio de nombres Gdiplus
y necesita conectarse a la biblioteca GDIPlus.lib
#pragma comment(lib, "gdiplus.lib")
2. Declare ULONG_PTR gdiplusToken como una variable miembro global o interna de la clase.
3. Agregue a la función FinalConstruct de la clase de implementación:
GdiplusStartupInput gdiplusStartupInput; //Inicializar GDI+ GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);4. Agregue:
GdiplusShutdown(gdiplusToken);
para que pueda utilizar las funciones de procesamiento de gráficos proporcionadas por GDI+
en la función FinalRelease
.Nota: Respecto al uso de GDI+, puede encontrar referencias en la siguiente URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdi+/gdi+.asp
http ://www .codeproject.com/vcpp/gdiplus/
6 El siguiente paso es implementar las propiedades y métodos enumerados en 4. A continuación se enumera un fragmento de código para el método ShowPic. Para otros códigos, consulte el
mapa de bitsdel código fuente.
mapa de bits(1,1,PixelFormat48bppRGB); Gráficos gráficos(&bitmap); USOS_CONVERSIÓN; Fuente de fuente (OLE2CW(m_bstrFontName),(float)m_fFontSize,m_nFontStyle,
PuntoUnidad,NULL); Origen del punto F (0, 0); formato StringFormat; formato.SetAlignment(StringAlignmentCenter); RectF enlazadoRect; gráficos.MeasureString(OLE2CW(m_bstrText),m_bstrText.Length (),
&fuente, origen, &formato, &boundRect); int nWidth = (int)boundRect.Width; int nAltura = (int)boundRect.Height; Mapa de bits bm(nAncho,nAlto,PixelFormat48bppRGB); Gráficos* g=Gráficos::FromImage (&bm); enlazadoRect.Width=boundRect.Width*2; SolidBrush solidbrush(m_cBackground); g->FillRectangle(&solidbrush,boundRect); SolidBrush SolidFont(m_cFontColor); PuntoF fPunto(0,0); g->DrawString(OLE2CW(m_bstrText),m_bstrText.Length (),
&fuente,fPoint,&SolidFont); resultado entero; CLSID pngClsid; resultado = GetCodecClsid(OLE2W(m_btrImgFormat), &pngClsid); HRESULT hora; HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, 0); CComPtr<IStream> pStm; if (FAILED(hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) )) return hora; bm.Save(pStm,&pngClsid,NULL); ULONG cElements = (ULONG)GlobalSize(hGlobal); LPBYTE lpData = (LPBYTE)GlobalLock(hGlobal); SAFEARRAY* pArray = SafeArrayCreateVector(VT_UI1, 0, cElements); para (UINT iElement = 0; iElement < cElements; iElement++) { idx largo = iElement; SafeArrayPutElement(pArray, &idx, ((LPBYTE)lpData) + iElement); } Desbloqueo Global(hGlobal); CComVariant vBytes; vBytes.vt = VT_ARRAY | VT_UI1; vBytes.parray = pArray; m_piResponse->Borrar (); m_piResponse->put_ContentType (m_btrImgFormat); m_piResponse->BinaryWrite(vBytes); m_piResponse->Fin ();
7. Ahora que la implementación del componente está completa, escribimos un ASP para probar el siguiente componente
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <cuerpo> <% establecer Imagen=Server.CreateObject("AspPic.AspPicCom") picture.Text="¿Puedes verme? ¡Soy de www.goodassister.com!" imagen.FontName="Heold" imagen.FontSize= 40 imagen.ImgFormat = "imagen/jpeg" imagen.FontStyle= 1 Picture.SetFontColor 255,3,242,4 '' representa Alfa, Rojo, Verde, Azul Picture.SetBackColor 10,243,42,54 '' representa Alfa, Rojo, Verde, Azul Imagen.MostrarPic establecer imagen = nada %> </cuerpo> </html>
Nota: Registre el componente regsvr32 AspPic.dll antes de usarlo
Abra esta página web ASP, verá la siguiente imagen
Ahora las ideas específicas para implementar aspImage están terminadas. Ahora, si necesita más efectos, puede enriquecer este componente usted mismo
: este tipo de componente tiene una amplia gama de usos, por ejemplo, cuando yahoo.com se registra como miembro. Se mostrarán palabras para evitar que la computadora se registre automáticamente, porque es ineficiente y no es fácil para las computadoras reconocer el texto en las imágenes. Este tipo de componente se aplica más a la generación de gráficos, como histogramas, gráficos circulares, gráficos de formas de onda. etc.
Eso es todo por este artículo. Si tiene algún comentario o cree que he cometido un error, dímelo.
Correo electrónico:[email protected]