本文純屬個人見解,是對前面學習的總結,如有描述不正確的地方還請高手指正~
由於上一篇的思緒比擬亂,所以新重整理思緒,並上傳了範例。
將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;
然後新重上傳Demo和修正後SVG.dll便方直接可調用。
由於CSDN不能上傳檔案,我上傳到源資上,便方大家下載直接應用。
意注應用VS2010,地本測試通過。
連結如下:
http://download.csdn.net/detail/fly_miss/5279632
開啟網頁的效果如下:
出導的效果如下:
文章結束給大家分享下程式員的一些笑話語錄:
程式員喝酒
我偶爾採用“木馬策略”、“交叉測試”,時間不長就開始“頻繁分配釋放資源”,“cache”也是免不了的了,
不過我從不搞“輪巡”,也不會“捕獲異常”,更不會“程式異常”,因為我有理性
克制的。