65.9K
CodeProject 正在变化。 阅读更多。
Home

CWebImageDC

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.64/5 (6投票s)

1999年12月4日

viewsIcon

188668

downloadIcon

3624

提供了一个基于内存的设备上下文 (DC),可以使用标准的 GDI 调用在该上下文中绘制图像。

Sample Image - WebImageDC.jpg

引言

该类源自 MFC 类 CDC,提供了一个基于内存的设备上下文,可以使用标准的 GDI 调用在该上下文中绘制图像。生成的图像可以保存为 PNG 文件,也可以写入 CMemFile,以便插入到 CHttpStream 中(本文末尾包含一个演示)。

用法

BOOL Create(CSize &pImageSize);

与许多 MFC 类一样,CWebImageDC 需要两步创建。实例化后,必须调用 Create 方法一次来生成位图。CSize 参数指示结果图像的宽度和高度(以像素为单位)。如果您不会绘制整个位图,则可能需要调用 Erase 方法(如下所示)。

BOOL SaveAsPNG(
    CString &pFileName,
    BOOL pInterlaced = TRUE,
    BOOL pTransparent = FALSE,
    COLORREF pTransparentColor = RGB(255,255,255));

将位图以 PNG 格式保存到 pFileName 参数中指定的文件中。可选的控制参数将确定结果文件是否为交错格式,以及是否将其颜色之一设置为透明(以及该颜色是什么)。

BOOL StreamAsPNG(
    CMemFile * pMemFile,
    BOOL pInterlaced = TRUE,
    BOOL pTransparent = FALSE,
    COLORREF pTransparentColor = RGB(255,255,255));

将位图以 PNG 格式写入 pMemFile 参数中指定的 CMemFile。然后可以使用 .Detach() 方法访问 MemFile 关联的缓冲区,并可以使用 .Write() 方法将其发送到 CHttpStream。请参阅 Bar 示例中的源代码,了解此技术的示例。

void Erase(COLORREF pColor);

用指定的颜色填充整个位图。

示例

Sample Image

上面的条形图是使用 CWebImageDC 在 ISAPI 插件中生成的,该插件接受一个参数列表,描述条形图中的单个条形,并返回一个 HTTP 流,其中包含描述的条形的栅格 PNG 格式图像。

用法

插件的使用方式如下

<img src="/scripts/bar.dll?Draw¶meters ">

参数的格式为

ww,hh,bc,dc,rr,vv,ss,sn,sc...

参数如下:

  • ww = 宽度(以像素为单位)
  • hh = 高度(以像素为单位)
  • bc = 背景颜色,采用 RRGGBB 格式(十六进制)
  • dc = 默认颜色
  • label = 列标签
  • rr = 条形的范围
  • vv = 条形的值
  • ss = sigma(分段)的数量
  • sn,sc = 用逗号分隔的 sigma 和颜色列表

注意:颜色采用十六进制 RRGGBB 格式,范围从 00 到 FF

示例

<img src="/scripts/bar.dll?Draw&30,300,FFFFFF,
   0000FF,Oct,40.0,36,3,20,00FF00,26,FFFF00,30,FF000">

将产生以下结果

Bar Image

可以将这些条形图中的一系列条形轻松地用于生成类似于前面显示的条形图,在 ASP 页面中。

致谢

该类使用了 PNG Working Group 提供的 PNG 和 ZLIB 库,以及 Alan Algustyniak 提供的 HIPNG。非常感谢这些优秀的库。

© . All rights reserved.