web端,微软图形chart控件的打印

项目中做了一个统计,为了省事儿就用ie自带的打印,打印输出的内容,但是发现,页面中使用了<asp:Chart>的控件,打印不出来。

一般的IE打印是没有调整这个选项


但是即使勾上了这个选项,打印可以看到背景了,但是还是看不到那个图形。原因是微软的图形的机制是生成的临时图片,所以可能是那个图片地址就不能引用所以导致打印不出图片。


解决方法:

打开微软的例子,发现它也打印不了,但是有2个例子可以打印,原来是将chart控件,放在网页文件中,直接输出流。

将chart控件放到网页中,然后加上一个属性rendertype="BinaryStreaming",在原来直接放置chart的地方,用image替换,

<asp:image id="Image1" runat="server" ImageUrl="test.aspx" width="480px" height="300px"></asp:image>,那个imageurl就是放chart的那个网页,那个网页是什么样的呢,是这样的,

<%@ Page Language="c#" Inherits="System.Web.UI.DataVisualization.Charting.Samples.BinaryStreamingImage" CodeFile="BinaryStreamingImage.aspx.cs" %>
<asp:chart id="Chart1" runat="server" height="296px" width="412px" imagelocation="~/TempImages/ChartPic_#SEQ(300,3)"
    imagetype="Png" palette="BrightPastel" backcolor="#F3DFC1" rendertype="BinaryStreaming"
    BorderlineDashStyle="Solid" backgradientstyle="TopBottom" borderwidth="2" bordercolor="181, 64, 1">
    <titles>
        <asp:Title ShadowColor="32, 0, 0, 0" Font="Trebuchet MS, 14.25pt, style=Bold" ShadowOffset="3" Text="Binary Streaming" ForeColor="26, 59, 105"></asp:Title>
    </titles>
    <legends>
        <asp:Legend Enabled="False" IsTextAutoFit="False" Name="Default" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold"></asp:Legend>
    </legends>
    <borderskin skinstyle="Emboss" />
    <series>
        <asp:Series XValueType="Double" Name="Series1" ChartType="SplineArea" BorderColor="180, 26, 59, 105" Color="220, 65, 140, 240" YValueType="Double">
            <points>
                <asp:DataPoint YValues="6" />
                <asp:DataPoint YValues="9" />
                <asp:DataPoint YValues="3" />
                <asp:DataPoint YValues="5" />
                <asp:DataPoint YValues="2" />
                <asp:DataPoint YValues="7" />
                <asp:DataPoint YValues="8" />
                <asp:DataPoint YValues="1" />
            </points>
        </asp:Series>
    </series>
    <chartareas>
        <asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" BackSecondaryColor="White" BackColor="OldLace" ShadowColor="Transparent">
            <area3dstyle Rotation="10" perspective="10" enable3d="True" Inclination="15" IsRightAngleAxes="False" wallwidth="0" IsClustered="False">
            </area3dstyle>
            <axisy linecolor="64, 64, 64, 64">
                <labelstyle font="Trebuchet MS, 8.25pt, style=Bold"/>
                <majorgrid linecolor="64, 64, 64, 64"/>
            </axisy>

            <axisx IsMarginVisible="False" linecolor="64, 64, 64, 64">
                <labelstyle font="Trebuchet MS, 8.25pt, style=Bold"/>
                <majorgrid linecolor="64, 64, 64, 64"/>
            </axisx>
        </asp:ChartArea>
    </chartareas>
</asp:chart>

什么都没有,就一个头,直接加chart控件。就直接输出来了。效果就是下图。如果你要根据参数动态生成图形,就用url传值的方式传过去即可。




Ps:

1、页面中不是引用image,而是常规使用chart控件,如果你把chart控件的rendertype="BinaryStreaming"属性写上去的话,那么你这个页面就会以字符串流的显示方式显示在IE浏览器中了。

2、页面常规使用chart控件,如果不是用IE,而是用chrome打印,是可以看到图片的,不知道为什么?不过为了通用,使用rendertype="BinaryStreaming"属性,将chart分离还是比较灵活的。

3、如果您还有什么用法或者解决方法可以留言,共同提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值