freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

利用xml實(shí)現(xiàn)通用web報(bào)表打印-資料下載頁

2025-06-30 19:03本頁面
  

【正文】 ke].InnerText)。 Color color = ([color].InnerText)。 Pen pen = new Pen(color, (float)stroke)。 if(arrow)//是否有箭頭 { AdjustableArrowCap Arrow = new AdjustableArrowCap( (float)(stroke * + 2), (float)(stroke * + 3), true)。 = Arrow。 } (pen, x, y, x, y + length)。//畫坐標(biāo) //畫刻度 foreach(XmlNode scale in ) { int len = ([length].InnerText)。 int height = ([height].InnerText)。 int width = ([width].InnerText)。 int fontsize = ([fontsize].InnerText)。 Color clr = ([color].InnerText)。 string name = 。 Pen p = new Pen(clr, (float)width)。 (p, x, y + len, x + height, y + len)。 Font font = new Font(Arial, (float)fontsize)。 StringFormat sf = new StringFormat()。 = 。 RectangleF rect = new RectangleF( (float)(x 100), (float)(y + len 25), 90f, 50f)。 = 。 (name, font, new SolidBrush(clr), rect, sf)。 } } private void DrawChart(Graphics g, XmlNode chart) { foreach(XmlNode lines in ) { DrawLines(g, lines)。 } } private void DrawLines(Graphics g, XmlNode lines) { int Stroke = ([stroke].InnerText)。 Point[] points = new Point[]。 Color linecolor = ([color].InnerText)。 for(int i = 0。 i 。 i++) { XmlNode node = [i]。 points[i] = new Point( ([x].InnerText), ([y].InnerText))。 int Radius = ([radius].InnerText)。 Color pointcolor = ([color].InnerText)。 if(Radius != 0)//畫點(diǎn) { (new SolidBrush(pointcolor), points[i].X Radius, points[i].Y Radius, Radius * 2, Radius * 2)。 } } Pen pen = new Pen(linecolor)。 (pen, points)。//畫線 } } } 然后,為Parser類的CreateElement方法增加一個(gè)小case,代碼如下: switch() { case text: printElement = new Text(element)。 break。 case table: printElement = new Table(element)。 break。 case linechart://新增加的linechart printElement = new LineChart(element)。 break。 default: printElement = new PrintElement()。 break。 } 將原來的XML文件中的table標(biāo)簽和其子標(biāo)簽都替換成剛才寫的那段linechart,然后編譯程序,運(yùn)行后效果如下所示: 現(xiàn)在,我們的打印控件就能打印折線圖了,由于我們采用了Abstract Factory的設(shè)計(jì)模式,將報(bào)表的打印和格式的解析分開,使得本程序有著非常方便的擴(kuò)充能力,如果需要再增加一種新形式的圖表,那么需要定義出標(biāo)簽,寫一個(gè)解析類,再到Paser中為這個(gè)類增加一個(gè)case就搞定了,PrintControl內(nèi)部的代碼一行都不需要改寫。 總結(jié): 以上就是如何制作打印控件的詳細(xì)介紹,基本上解答了讀者來信中的大部分問題,另外還有幾個(gè)被問得很多的問題這里再集中解答一下: Q: Framework? A:是肯定的,這也是算是本方案一個(gè)缺陷。不過我可以肯定,在不遠(yuǎn)的將來, Framework以升級(jí)或者是補(bǔ)丁的形式安裝到我們的大多數(shù)Windows甚至是Linux操作系統(tǒng)當(dāng)中。那時(shí)便不會(huì)有現(xiàn)在的這個(gè)遺憾存在。 Q:我采用Winform應(yīng)用程序的形式,那么是不是存在著一個(gè)部署的問題?例如我增加了一種新的圖表格式,那么是否所有的打印客戶端都需要升級(jí)到新的版本? A:是的, Remoting的設(shè)計(jì)來避免這個(gè)問題:,因此同樣可以通過Remoting序列化,這樣我們就可以把解析類(Table,Text,Chart等)和廠類(Paser)都放到服務(wù)器端通過Remoting提供遠(yuǎn)程調(diào)用方法,而只把打印控制(PrintControl)放到客戶端,那么,當(dāng)我們新增加圖表的時(shí)候,就可以不需要對(duì)客戶端進(jìn)行任何升級(jí)。 Q:打開網(wǎng)頁控件不會(huì)運(yùn)行,只顯示一個(gè)白框,怎么辦? A: Framework SP1或者SP2,它們默認(rèn)的安全策略是不允許控件運(yùn)行的,這時(shí)需要進(jìn)行以下修改:打開Microsoft .NET Framework Wizards,在程序里有,也可以在管理工具里面找到它,點(diǎn)擊,如下圖所示: 再將Internet區(qū)域的安全級(jí)別設(shè)置為完全信任,如下圖所示: 整個(gè)方案到這里就介紹完了,讀者如果在使用中出現(xiàn)什么問題,請發(fā)電子郵件到nluyan@, nluyan@,或者到微軟的中文DotNet新聞組來進(jìn)行詳細(xì)討論。謝謝! 37 /
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1