ComponentOne Studio TrueChart for ASP.NET (C1WebChart2D) ヘルプ
ASPページベースの描画チュートリアル
C1WebChart チュートリアル > ASPページベースの描画チュートリアル

ASPページベースの描画チュートリアルでは、内部のHttpHandlerの代わりに、カスタムASPページが使用されているので、グラフの描画方法を高度に制御できます。このメソッドを使用することにより、クライアントキャッシュ、サーバーキャッシュ、IIS のロギングを含む応答の管理をカスタマイズできます。

以下のコード例は、ASP ページの ImageRenderMethod プロパティを使用します。両方とも HTTPHandler に非常に類似しています。ただし、HTTPHandler エントリを web.config に追加する代わりに、指定した ASP ページを作成および追加して <IMG> タグのソース属性の URL 要求を処理する必要があります。

Visual Basic コードの書き方

Visual Basic
コードのコピー
  
 Imports System
Imports System.Web
Imports System.Web.SessionState
Namespace AspPageSample
    _
Public Class StreamResponse
Inherits System.Web.UI.Page 
   ' イメージをこのページに転送する方法を決定します。
Private Sub Page_Load(sender As Object, e As System.EventArgs)
Dim ses As String = Request("SessionID") ' セッション転送の場合は非 Null 値。
Dim cac As String = Request("CacheID")     ' キャッシュの転送の場合は非 Null 値。
Dim del As String = Request("Delete")      ' 削除要求の場合は非 Null 値。
Dim doDelete As Boolean = False   
     ' 削除要求ステータスをチェックします。
   If Not (del Is Nothing) Then
    del = del.ToLower()
    doDelete = del = "t" Or del = "true"
   End If   
   Dim image As Byte() = Nothing
   Dim imgtype As String = String.Empty
   Dim img As String = String.Empty
   Dim hsh As String = String.Empty   
   If Not (ses Is Nothing) Then
     ' セッションオブジェクトからイメージ情報を抽出します。
    img = ses + "_ImageBytes"
    hsh = ses + "_Hash"    
    image = CType(Session(img), Byte())
    imgtype = CStr(Session(hsh))    
    If doDelete Then
     Session.Remove(img)
     Session.Remove(hsh)
    End If
   Else
   If Not (cac Is Nothing) Then
       ' アプリケーションキャッシュからイメージ情報を抽出します。
     img = cac + "_ImageBytes"
     hsh = cac + "_Hash"     
     image = CType(Cache(img), Byte())
     imgtype = CStr(Cache(hsh))    
     If doDelete Then
      Cache.Remove(img)
      Cache.Remove(hsh)
     End If
    End If
   End If 
   If Not (image Is Nothing) And Not (imgtype Is Nothing) Then
      ' バイナリイメージをクライアントに返します。
    imgtype = "image/" + imgtype.Substring((imgtype.LastIndexOf("."c) + 1))    
    Response.Clear()
Response.Cache.SetExpires(DateTime.MinValue)    ' クライアントキャッシュを消去します。
    Response.ContentType = imgtype
    Response.BinaryWrite(image)
    Response.Flush()
   End If
  End Sub 'Page_Load
End Class 'StreamResponse
End Namespace 'AspPageSample

C# コードの書き方

C#
コードのコピー
 using System;
using System.Web;
using System.Web.SessionState;
namespace AspPageSample
{
  public class StreamResponse : System.Web.UI.Page
  {
     // イメージをこのページに転送する方法を決定します。
    private void Page_Load(object sender, System.EventArgs e)
    {
      string ses = Request["SessionID"]; // セッション転送の場合は非 Null 値。
      string cac = Request["CacheID"];    // キャッシュの転送の場合は非 Null 値。
      string del = Request["Delete"];     // 削除要求の場合は非 Null 値。
      bool doDelete = false;
       // 削除要求ステータスをチェックします。
      if(del != null)
      {
        del = del.ToLower();
        doDelete = (del == "t" |
      }
      byte [] image = null;
      string imgtype = string.Empty;
      string img = string.Empty;
      string hsh = string.Empty;
      if(ses != null)
      {
         // セッションオブジェクトからイメージ情報を抽出します。
       img = ses + "_ImageBytes";
        hsh = ses + "_Hash";
        image = (byte[])Session[img];
        imgtype = (string)Session[hsh];
        if(doDelete)
        {
          Session.Remove(img);
          Session.Remove(hsh);
        }
      }
      else if(cac != null)
   {
         // アプリケーションキャッシュからイメージ情報を抽出します。
        img = cac + "_ImageBytes";
        hsh = cac + "_Hash";
        image = (byte[])Cache[img];
        imgtype = (string)Cache[hsh];
        if(doDelete)
        {
          Cache.Remove(img);
          Cache.Remove(hsh);
        }
      }
      if(image != null && imgtype != null)
      {
        // バイナリイメージをクライアントに返します。
        imgtype = "image/" + imgtype.Substring(imgtype.LastIndexOf('.')+1);
       Response.Clear();
        Response.Cache.SetExpires(DateTime.MinValue);  // クライアントキャッシュを消去します。
        Response.ContentType = imgtype;
        Response.BinaryWrite(image);
        Response.Flush();
      }
    }
  }
}
関連トピック