Laden Sie den Beispielquellcode für diesen Artikel herunter
Bevor Sie diesen Artikel lesen, nehmen Sie am besten Kontakt mit dem folgenden
GDI+
auf
Generieren Sie Komponenten mit ATL
STL
ASP-Nutzungskomponenten
aspImage ist eine sehr gute Komponente auf der ServerObjects-Site. Sie ermöglicht uns die Implementierung vieler Grafikverarbeitungsfunktionen. Wenn Sie detailliertere Informationen benötigen, können Sie die offizielle Website besuchen. Lassen Sie uns über die Verwendung dieser Komponente sprechen. Natürlich ist die Verwendung von GDI + im folgenden Beispiel nicht die einzige Möglichkeit, die Komponentengrafikverarbeitung zu implementieren andere Methoden selbst.
Das Folgende ist der Implementierungsprozess
. Verwenden Sie zunächst den Visual C++-Assistenten, um ein ATL-Projekt zu erstellen.
2. Als nächstes fügen Sie eine ATL Active Server Page-Komponentenschnittstellenklasse hinzu
3. Generieren Sie eine Klasse mit dem Namen AspPicCom und wählen Sie das ASP-interne Objekt Response aus
4. Fügen Sie der IAspPicCom-Schnittstelle Eigenschaften und Methoden hinzu, wie in der folgenden Tabelle gezeigt:
Name | Kategorie | Bedeutung | Aufrufmethode | |
FontName | Attribut | Schriftartname | Zeichenfolgentyp Wie zu verwenden .FontName="宋体" | |
FontSize- | Eigenschaft | , Schriftgröße, | Ganzzahl Wie zu verwenden .FontSize=40 | |
FontStyle- | Eigenschaft | zur | Schriftartengestaltung | Regulär = 0, Fett = 1, Kursiv = 2, BoldItalic = 3, Unterstreichung = 4, Durchgestrichen = 8 Wie zu verwenden .FontStyle=8 |
ImgFormat- | Eigenschaft | ,Grafikformat- | String-Typ Bild/Gif Bild/JPEG Bild/bmp ... Wie zu verwenden | |
.ImgFormat="image/gif" | ||||
legt | die | Schriftfarbe | und deren Verwendung | fest.SetFontColor 255,3,242,4 Die obigen Zahlen stehen für Alpha, Rot, Grün und Blau. |
So verwenden Sie | die SetBackColor | -Methode, | um die Hintergrundfarbe der Schriftart festzulegen. | .SetBackColor 255,3,242,4 Die obigen Zahlen stehen für Alpha, Rot, Grün und Blau. |
Die ShowPic- | Methode | sendet das Bild an den Client | . .ShowPic |
#include <Gdiplus.h> verwendet den Namensraum Gdiplus;
und muss eine Verbindung zur GDIPlus.lib-Bibliothek herstellen.
#pragma comment(lib, „gdiplus.lib“)
2. Deklarieren Sie ULONG_PTR gdiplusToken; als globale oder interne Mitgliedsvariable der Klasse.
3. Fügen Sie der FinalConstruct-Funktion der Implementierungsklasse Folgendes hinzu:
GdiplusStartupInput gdiplusStartupInput; //GDI+ initialisieren GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);4. Fügen Sie hinzu:
GdiplusShutdown(gdiplusToken);
damit Sie die von GDI+ bereitgestellten Grafikverarbeitungsfunktionen
in der FinalRelease-Funktion
verwenden können.Hinweis: Informationen zur Verwendung von GDI+ finden Sie unter der folgenden URL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdi+/gdi+.asp
http ://www.codeproject.com/vcpp/gdiplus/
6 Der nächste Schritt besteht darin, die in 4 aufgeführten Eigenschaften und Methoden zu implementieren. Ein Teil des Codes für die ShowPic-Methode ist unten aufgeführt. Weitere Codes finden Sie in der Quellcode-
Bitmap bitmap(1,1,PixelFormat48bppRGB); Grafikgrafiken(&bitmap); USES_CONVERSION; Schriftart( OLE2CW(m_bstrFontName),(float)m_fFontSize,m_nFontStyle,
UnitPoint,NULL); PointF-Ursprung (0, 0); StringFormat-Format; format.SetAlignment(StringAlignmentCenter); RectFboundRect; Graphics.MeasureString(OLE2CW(m_bstrText),m_bstrText.Length (),
&font, origin, &format, &boundRect); int nWidth = (int)boundRect.Width; int nHeight = (int)boundRect.Height; Bitmap bm(nWidth,nHeight,PixelFormat48bppRGB); Grafiken* g=Graphics::FromImage (&bm); boundRect.Width=boundRect.Width*2; SolidBrush solidbrush(m_cBackground); g->FillRectangle(&solidbrush,boundRect); SolidBrush SolidFont(m_cFontColor); PointF fPoint(0,0); g->DrawString(OLE2CW(m_bstrText),m_bstrText.Length (),
&font,fPoint,&SolidFont); int Ergebnis; CLSID pngClsid; result = GetCodecClsid(OLE2W(m_btrImgFormat ), &pngClsid); HRESULT Std.; HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, 0); CComPtr<IStream> pStm; if (FAILED(hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) )) return hr; bm.Save(pStm,&pngClsid,NULL); ULONG cElements = (ULONG)GlobalSize(hGlobal); LPBYTE lpData = (LPBYTE)GlobalLock(hGlobal); SAFEARRAY* pArray = SafeArrayCreateVector(VT_UI1, 0, cElements); for (UINT iElement = 0; iElement < cElements; iElement++) { long idx = iElement; SafeArrayPutElement(pArray, &idx, ((LPBYTE)lpData) + iElement); } GlobalUnlock(hGlobal); CComVariant vBytes; vBytes.vt = VT_ARRAY |. vBytes.parray = pArray; m_piResponse->Clear (); m_piResponse->put_ContentType (m_btrImgFormat); m_piResponse->BinaryWrite(vBytes); m_piResponse->End ();
7. Da die Komponentenimplementierung nun abgeschlossen ist, schreiben wir ein ASP, um die folgende Komponente zu testen:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <Körper> <% set Picture=Server.CreateObject("AspPic.AspPicCom") picture.Text="Kannst du mich sehen? Ich komme von www.goodassister.com!" picture.FontName="Heold" picture.FontSize= 40 picture.ImgFormat = "image/jpeg" picture.FontStyle= 1 Picture.SetFontColor 255,3,242,4 '' steht für Alpha, Rot, Grün, Blau Picture.SetBackColor 10.243,42,54 '' steht für Alpha, Rot, Grün, Blau Picture.ShowPic setze Bild=nichts %> </body> </html>
Hinweis: Registrieren Sie die Komponente regsvr32 AspPic.dll vor der Verwendung
Öffnen Sie diese ASP-Webseite. Sie sehen das folgende Bild
Jetzt sind die konkreten Ideen für die Implementierung von aspImage fertig. Wenn Sie weitere Effekte benötigen, können Sie diese
Art von Komponente selbst bereichern, z. B. wenn Sie sich bei yahoo.com als Mitglied registrieren Wörter werden angezeigt, um zu verhindern, dass sich der Computer automatisch registriert, da es für Computer ineffizient und nicht einfach ist, Text auf Bildern zu erkennen. Diese Art von Komponente wird eher für die Erstellung von Diagrammen wie Histogrammen, Kreisdiagrammen und Wellenformdiagrammen verwendet. usw.
Das war's für diesen Artikel. Wenn Sie irgendwelche Kommentare haben oder glauben, dass ich einen Fehler gemacht habe, sagen Sie es mir bitte.
E-Mail:[email protected]