Загрузите пример исходного кода для этой статьи.
Прежде чем читать эту статью, лучше всего связаться со следующими
GDI+
Генерация компонентов с помощью ATL
СТЛ
Компоненты использования ASP
aspImage — очень хороший компонент на сайте ServerObjects. Он позволяет нам использовать Asp для реализации многих функций обработки графики. Если вам нужна более подробная информация, вы можете посетить его официальный сайт, который здесь не обсуждается. Давайте поговорим о том, как использовать этот компонент. Здесь мы поговорим о том, как реализовать этот тип компонента. Конечно, использование GDI+ в следующем примере — не единственный способ реализовать обработку графики компонента. другие методы самостоятельно.
Ниже описан процесс реализации
. Сначала с помощью мастера Visual C++ создайте проект ATL.
2. Затем добавьте класс интерфейса компонента ATL Active Server Page.
3. Создайте класс с именем AspPicCom и выберите внутренний объект ASP Response.
4. Добавьте свойства и методы в интерфейс IAspPicCom, как показано в следующей таблице:
категория | имени, | означающая | метод вызова | |
атрибут | FontName, | имяшрифта, | строковый тип. Как использовать .FontName="宋体" | |
Свойство | FontSize | Размер шрифта | целое число Как использовать .FontSize=40 | |
Свойство | FontStyle | формирование | типа шрифта | Обычный = 0, Жирный = 1, Курсив = 2, Жирный курсив = 3, Подчеркивание = 4, Вычеркивание = 8 Как использовать .FontStyle=8 |
Свойство | ImgFormat | Тип строки | графического формата | изображение/гиф изображение/JPEG изображение/bmp ... Как использовать .ImgFormat="image/gif" |
Метод | SetFontColor | устанавливает цвет шрифта | и способы его использования. .SetFontColor 255,3,242,4 Числа выше обозначают Alpha, Red, Green и Blue соответственно. | |
Как использовать | метод | SetBackColor | для установки цвета фона шрифта. | .SetBackColor 255,3,242,4 Числа выше представляют Alpha, Red, Green и Blue. |
Метод | ShowPic | отправляет изображение клиенту | . .ShowPic |
#include <Gdiplus.h> используя пространство имен Gdiplus;
и необходимо подключиться к библиотеке GDIPlus.lib
#pragma comment(lib, "gdiplus.lib")
2. Объявить ULONG_PTR gdiplusToken как глобальную или внутреннюю переменную-член класса.
3. Добавьте в функцию FinalConstruct класса реализации:
GdiplusStartupInput gdiplusStartupInput; //Инициализируем GDI+ GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);4. Добавьте:
GdiplusShutdown(gdiplusToken);
чтобы можно было использовать функции обработки графики, предоставляемые GDI+
в функции FinalRelease
.Примечание. Сведения об использовании GDI+ можно найти по следующему URL-адресу:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdicpp/gdi+/gdi+.asp
http. ://www .codeproject.com/vcpp/gdiplus/
6 Следующим шагом является реализация свойств и методов, перечисленных в пункте 4. Ниже приведен фрагмент кода для метода ShowPic. Для получения других кодов просмотрите исходный код
Bitmap. растровое изображение (1,1, PixelFormat48bppRGB); Графика графика(&растровая); ИСПОЛЬЗОВАНИЕ_CONVERSION; Шрифт шрифта( OLE2CW(m_bstrFontName),(float)m_fFontSize,m_nFontStyle,
UnitPoint, NULL); Начало координат PointF(0, 0); формат StringFormat; format.SetAlignment(StringAlignmentCenter); RectFboundRect; графики.MeasureString(OLE2CW(m_bstrText),m_bstrText.Length (),
&font, origin, &format, &boundRect); интервал nWidth = (int)boundRect.Width; int nHeight = (int)boundRect.Height; Растровое изображение bm(nWidth,nHeight,PixelFormat48bppRGB); Графика* g=Graphics::FromImage (&bm); boundRect.Width=boundRect.Width*2; SolidBrush SolidBrush (m_cBackground); g->FillRectangle(&solidbrush,boundRect); SolidBrush SolidFont (m_cFontColor); ТочкаF fPoint(0,0); g->DrawString(OLE2CW(m_bstrText),m_bstrText.Length (),
&шрифт,fPoint,&SolidFont); int результат; CLSID pngClsid; результат = GetCodecClsid(OLE2W(m_btrImgFormat), &pngClsid); ЧРЕЗУЛЬТАТ час; 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); для (UINT iElement = 0; iElement < cElements; iElement++) { длинный идентификатор = iElement; SafeArrayPutElement(pArray, &idx, ((LPBYTE)lpData) + iElement); } GlobalUnlock(hGlobal); CComVariant vBytes; vBytes.vt = VT_ARRAY | VT_UI1; vBytes.parray = pArray; m_piResponse->Очистить (); m_piResponse->put_ContentType (m_btrImgFormat); m_piResponse->BinaryWrite(vBytes); m_piResponse->Конец ();
7. Теперь, когда реализация компонента завершена, мы пишем ASP для тестирования следующего компонента
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <html> <тело> <% set Picture=Server.CreateObject("AspPic.AspPicCom") image.Text="Вы меня видите? Я с www.goodassister.com!" картинка.FontName="Сохранено" картинка.FontSize= 40 картинка.ImgFormat = "изображение/jpeg" картинка.FontStyle= 1 Picture.SetFontColor 255,3,242,4 '' представляет альфа, красный, зеленый, синий Picture.SetBackColor 10,243,42,54 '' представляет альфа, красный, зеленый, синий Изображение.ShowPic установить Изображение = ничего %> </тело> </html>
Примечание. Перед использованием зарегистрируйте компонент regsvr32 AspPic.dll.
Откройте эту веб-страницу ASP, вы увидите следующее изображение.
Теперь конкретные идеи по реализации aspImage закончены. Теперь, если вам нужны дополнительные эффекты, вы можете самостоятельно дополнить этот компонент.
Отступление: этот тип компонента имеет широкий спектр использования. Например, когда yahoo.com регистрируется в качестве участника, графический. слова будут отображаться, чтобы предотвратить автоматическую регистрацию компьютера, поскольку компьютерам неэффективно и нелегко распознавать текст на изображениях. Этот тип компонента больше применяется для создания диаграмм, таких как гистограммы, круговые диаграммы, волновые диаграммы и т. д. и т. д.
На этом статья заканчивается. Если у вас есть какие-либо комментарии или вы считаете, что я допустил ошибку, скажите мне.
Электронная почта:[email protected]