Unduh contoh kode sumber untuk artikel ini
Sebelum membaca artikel ini, sebaiknya hubungi
GDI+
berikut
Hasilkan komponen menggunakan ATL
STL
Komponen penggunaan ASP
aspImage adalah komponen yang sangat bagus di situs ServerObjects. Ini memungkinkan kita menggunakan Asp untuk mengimplementasikan banyak fungsi pemrosesan grafis. Jika Anda memerlukan informasi lebih detail, Anda dapat mengunjungi situs resminya, yang tidak akan dibahas di sini. Mari kita bicara tentang cara menggunakan komponen ini. Yang akan kita bahas di sini adalah bagaimana mengimplementasikan komponen jenis ini. Tentu saja, menggunakan GDI+ pada contoh berikut bukanlah satu-satunya cara untuk mengimplementasikan pemrosesan grafis komponen metode lain sendiri.
Berikut ini adalah proses implementasinya
. Pertama, gunakan wizard Visual C++ untuk membuat proyek ATL.
2. Selanjutnya tambahkan kelas antarmuka komponen Halaman Server Aktif ATL
3. Hasilkan kelas bernama AspPicCom dan pilih Respon objek internal ASP
4. Tambahkan properti dan metode ke antarmuka IAspPicCom, seperti yang ditunjukkan dalam tabel berikut:
nama | kategori | arti | metode panggilan | |
FontName | nama | font | tipe string Cara menggunakan .FontName="宋体" | |
bilangan bulat | ukuran font | properti | FontSize | Cara menggunakan .FontSize=40 |
Pembentukan | tipe font | properti | FontStyle | Reguler = 0, Tebal = 1, Miring = 2, Miring Tebal = 3, Garis bawahi = 4, Coretan = 8 Cara menggunakan .FontStyle=8 |
Tipe string | format grafik | properti | ImgFormat | gambar/gif gambar/jpeg gambar/bmp ... Cara menggunakan .ImgFormat="image/gif" |
Metode | SetFontColor | mengatur warna font | dan cara menggunakannya .SetFontColor 255,3,242,4 Angka diatas masing-masing mewakili Alpha, Merah, Hijau, dan Biru. | |
Caranya menggunakan | metode | SetBackColor | untuk mengatur warna background font. | .SetBackColor 255,3,242,4 Angka-angka di atas mewakili Alpha, Merah, Hijau, dan Biru. |
Metode | ShowPic | mengirimkan gambar ke klien | . .ShowPic |
#termasuk <Gdiplus.h> menggunakan namespace Gdiplus;
dan perlu terhubung ke perpustakaan GDIPlus.lib
#pragma comment(lib, "gdiplus.lib")
2. Deklarasikan ULONG_PTR gdiplusToken sebagai variabel anggota global atau internal kelas.
3. Tambahkan fungsi FinalConstruct dari kelas implementasi:
GdiplusStartupInput gdiplusStartupInput; //Inisialisasi GDI+ GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);4. Tambahkan:
GdiplusShutdown(gdiplusToken);
sehingga Anda dapat menggunakan fungsi pemrosesan grafis yang disediakan oleh GDI+
di fungsi FinalRelease
.Catatan: Mengenai penggunaan GDI+, Anda dapat menemukan referensi di URL berikut:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdi+/gdi+.asp
http ://www .codeproject.com/vcpp/gdiplus/
6 Langkah selanjutnya adalah mengimplementasikan properti dan metode yang tercantum pada 4. Sepotong kode untuk metode ShowPic tercantum di bawah. Untuk kode lainnya, silakan lihat kode sumber
Bitmap bitmap(1,1,PixelFormat48bppRGB); Grafik grafis(&bitmap); USES_CONVERSION; Font font( OLE2CW(m_bstrFontName),(float)m_fFontSize,m_nFontStyle,
Titik Satuan,NULL); TitikF asal(0, 0); Format StringFormat; format.SetAlignment(StringAlignmentCenter); RectF terikatRect; grafis.MeasureString(OLE2CW(m_bstrText),m_bstrText.Panjang(),
&font, asal, &format, &terikatRect); int nLebar = (int)boundRect.Width; int nTinggi = (int)boundRect.Height; Bitmap bm(nLebar,nTinggi,PixelFormat48bppRGB); Grafik* g=Grafik::FromImage (&bm); terikatRect.Width=boundRect.Width*2; SolidBrush solidbrush(m_cLatar Belakang); g->FillRectangle(&solidbrush,boundRect); SolidBrush SolidFont(m_cFontColor); TitikF fTitik(0,0); g->DrawString(OLE2CW(m_bstrText),m_bstrText.Panjang(),
&font,fPoint,&SolidFont); int hasil; CLSID pngClsid; hasil = GetCodecClsid(OLE2W(m_btrImgFormat ), &pngClsid); HRESULT jam; HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, 0); CComPtr<IStream> pStm; if (FAILED(hr = CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) )) kembalikan jam; bm.Simpan(pStm,&pngClsid,NULL); Elemen ULONG = (ULONG)Ukuran Global(hGlobal); LPBYTE lpData = (LPBYTE)GlobalLock(hGlobal); SAFEARRAY* pArray = SafeArrayCreateVector(VT_UI1, 0, cElements); untuk (UINT iElement = 0; iElement < cElements; iElement++) { idx panjang = iElement; SafeArrayPutElement(pArray, &idx, ((LPBYTE)lpData) + iElement); } Buka Kunci Global(hGlobal); vByte Varian CCom; vBytes.vt = VT_ARRAY |. vBytes.parray = pArray; m_piResponse->Hapus(); m_piResponse->put_ContentType (m_btrImgFormat); m_piResponse->BinaryWrite(vBytes); m_piResponse->Akhir();
7. Sekarang implementasi komponen telah selesai, kita menulis ASP untuk menguji komponen berikut
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <tubuh> <% atur Gambar=Server.CreateObject("AspPic.AspPicCom") picture.Text="Dapatkah Anda melihat saya? Saya dari www.goodassister.com!" gambar.FontName="Ditahan" gambar.Ukuran Font= 40 gambar.ImgFormat = "gambar/jpeg" gambar.FontStyle= 1 Picture.SetFontColor 255,3,242,4 '' mewakili Alpha, Merah, Hijau, Biru Picture.SetBackColor 10,243,42,54 '' mewakili Alpha, Merah, Hijau, Biru Gambar.TampilkanPic atur Gambar=tidak ada %> </tubuh> </html>
Catatan: Daftarkan komponen regsvr32 AspPic.dll sebelum digunakan
Buka halaman web ASP ini, Anda akan melihat gambar berikut
Sekarang ide spesifik untuk mengimplementasikan aspImage telah selesai. Sekarang jika Anda membutuhkan lebih banyak efek, Anda dapat memperkaya sendiri komponen ini.
Penyimpangan: Komponen jenis ini memiliki kegunaan yang luas, misalnya saat yahoo.com mendaftar sebagai anggota, grafis kata-kata akan ditampilkan untuk mencegah komputer mendaftar secara otomatis, karena tidak efisien dan tidak mudah bagi komputer untuk mengenali teks pada gambar. Komponen jenis ini lebih banyak diterapkan pada pembuatan bagan, seperti histogram, diagram lingkaran, diagram bentuk gelombang,. dll.
Itu saja untuk artikel ini. Jika Anda memiliki komentar atau merasa saya telah melakukan kesalahan, tolong beri tahu saya.
Surel:[email protected]