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

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

次のセクションでは、<IMG> タグとその引数の作成およびクライアント側にグラフのイメージを転送する<IMG> のソース属性を示すいくつかのイメージ描画メソッドの使用方法を説明します。このチュートリアルでは、簡単なプロジェクトを通じて、イメージ描画メソッドは詳細に説明されています。以下のコード例は、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" || del == "true");
                        }
            
                        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)
                        {
                            int iext = imgtype.LastIndexOf('.') + 1;
                            imgtype = "image/" +
                            imgtype.Substring(iext);
                            Response.Clear();
                            Response.Cache.SetExpires(DateTime.MinValue);
            
                            // クライアントキャッシュを消去します。
                            Response.ContentType = imgtype;
                            Response.BinaryWrite(image);
                            Response.Flush();
                        }
                    }
                }
            }
関連トピック