highcharts 匯出圖片 .net c#(二)

來源:互聯網
上載者:User

由於上一篇的思路比較亂,所以重新整理思路,並上傳了範例。

 將highcharts.js提供了匯出的功能使用SVG修複的問題記錄如下,方便其他同學少犯錯誤。

在使用SVG Render Enginee中主要遇到如下問題: 

1、在SVG的字串第一行,我擷取到通常會有兩個XMLns;

2、在LinearGradient中使用SVGDocment調用Draw方法,出現記憶體溢出。

見下圖: 


3、在Text節點使用text-anchor會出現記憶體溢出的情況。

 <text style="font: 11px/normal Trebuchet MS, Verdana, sans-serif; width: 116px; color: rgb(0, 0, 0); cursor: default; font-size-adjust: none; font-stretch: normal; fill: #000;" opacity="1" text-anchor="middle" x="152.7857" y="331">      <tspan x="152.7857">XX高速</tspan>    </text>

4、在使用Text節點時,匯出時文字不顯示。


解決辦法: 

問題1,使用字串替換,將" <svg xmlns="http://www.w3.org/2000/svg" 替換成“<SVG”;

問題2,要修改SVG的原始碼,SvgLinearGradientServer.cs 在執行個體化時LinearGradientBrush時,由於Start等於End導致問題,判斷當Start等於End時,End的X和Y分別加1;

問題3,要修改SVG的原始碼,有其他人引入了enum SvgVisibility,但是還需要在SvgVisualElement.cs的87行,修改如下:

 if (this.Path != null && Visible == SvgVisibility.Visible)
為:

 if (this.Path != null && (Visible == SvgVisibility.Visible || Visible == SvgVisibility.Inherit))

問題4,由於SvgText讀到字型大小fontSize為0,簡單修改SvgText.cs,在208行修改如下:

     float fontSize = this.FontSize.ToDeviceValue(this);                    if (fontSize == 0.0f)                    {                        fontSize = 10.0f;                    }                    int stringWidth;

同時還要修改208行如下。

-                if (_path == null || this.IsPathDirty && !string.IsNullOrEmpty(this.Text))+                if ((_path == null || this.IsPathDirty) && !string.IsNullOrEmpty(this.Text))


然後重新上傳Demo和修正後SVG.dll方便直接可調用。

由於CSDN不能上傳檔案,我上傳到資源上,方便大家下載直接使用。

注意使用VS2010,本地測試通過。

連結如下:

http://download.csdn.net/detail/fly_miss/5279632


開啟網頁的效果如下:

匯出的效果如下:









相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.