4

Image/Pngから戻るaspxページを作成しようとしていますchartDirector

これまでのVBの内容は次のとおりです。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
    Handles Me.Load
    Dim mychart As XYChart = New XYChart(700, 170)
    Dim values As Double() = {25, 18, 15, 12, 8, 30, 35}
    Dim labels As String() = {"Labor", "Licenses", "Taxes", "Legal", "Insurance",
                              "Facilities", "Production"}
    mychart.setPlotArea(30, 20, 200, 200)
    mychart.addBarLayer(values)
    Response.ContentType = "image/png"
    Response.BinaryWrite(mychart.makeChart2(Chart.PNG))
    Response.Close()
End Sub

このページを実行すると、次の出力が得られます。

私は次のaspコードからこのアイデアを得ました

   <%@ language="vbscript" %> 
   <% 
   Set cd = CreateObject("ChartDirector.API") 
   'The data for the bar chart 
   data = Array(85, 156, 179.5, 211, 123) 
   'The labels for the bar chart 
   labels = Array("Mon", "Tue", "Wed", "Thu", "Fri") 
   'First, create a XYChart of size 250 pixels x 250 pixels 
   Set c = cd.XYChart(250, 250) 
   'Set the plotarea rectangle to start at (30, 20) and of  
   322
   '200 pixels in width and 200 in height 
   Call c.setPlotArea(30, 20, 200, 200) 
   'Add a bar chart layer using the supplied data 
   Call c.addBarLayer(data) 
   'Set the x-axis labels using the supplied labels 
   Call c.xAxis().setLabels(labels) 
   'output the chart 
   Response.contenttype = "image/png" 
   Response.binarywrite c.makeChart2(cd.PNG) 
   Response.end 
   %> 

このページにimg srcリンクして画像をレンダリングしました

質問は、どうすれば同じ実装を行うことができaspxますか?

始めたばかりの.Netについてあまり知らないことに注意してください。

4

2 に答える 2

3

Response.Endの代わりに使用してくださいResponse.Close

応答はバッファリングされるため、これを閉じると、ストリームを閉じる前にバッファをフラッシュしない限り、ブラウザはバッファにあるものを取得しません。

于 2012-08-03T12:39:02.427 に答える
3

これは、クラシックページ.ashxではなくカスタムHttpHandlerを使用したい場合です。これらを使用するための優れた入門書です。.aspx

IHttpHandler基本的に、メソッドを定義するインターフェースを継承しますProcessRequest。残念ながら、私はC#しか知りません。

public class CustomImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        // here you'll use context.Response to set the appropriate
        // content and http headers
        context.Response.StatusCode = (int)HttpStatusCode.OK;
        context.Response.ContentType = "image/png";
        byte[] responseImage = GenerateImage();
        context.Response.BinaryWrite(responseImage);
        context.Response.Flush();
    }
}
于 2012-08-03T12:30:59.263 に答える