2009-09-27 30 views
1

我想在C#中的Windows窗體項目上顯示數據。如何在C#WinForms項目中繪製「頁面」

GUI的一般草圖與Acrobat Reader或MS Word類似 - 這意味着我想要在多個頁面上顯示數據,並讓用戶在頁面之間導航。我所展示的數據並不特別,我只是想在查看時給用戶一個「頁面」的感覺。

我正在尋找一個好的起點,最好是開源的。

我想過使用某種報表工具,比如Crystal Reports,這是個好主意嗎?

此外,最好是使用WPF,然後WinForms的呢?

歡迎任何想法和建議。

謝謝。

+0

你的意思是你想像書一樣做,你總是有兩頁(左和右)顯示在一個時間? – MusiGenesis 2009-09-27 21:25:37

+0

是的,並且還顯示單個頁面,放大/縮小等。 – Amirshk 2009-09-27 21:28:43

回答

1

如果這個項目只是爲了好玩,並且如果您已經在使用Visual Studio 2008,那麼WPF就是一個不錯的選擇。

但是,如果您打算將此作爲商業項目,我會建議將其作爲WinForms應用程序。 WPF需要Visual Studio 2008和.Net 3.5。許多Windows用戶(尤其是企業客戶)仍在使用.Net 2.0,並且不打算儘快升級。有些甚至還在.Net 1.1(或者根本沒有.Net)。 .Net 2.0現在預裝在新的PC上,而2.0的安裝程序只有23 MB(而稍微錯誤的.Net 3.5安裝程序接近200 MB)。此外,由於Mono,.Net應用程序可以(可能)在Mac,Linux和iPhone上運行,但Mono現在位於.Net 2.0和.Net 3.5之間,所以WPF應用程序不能跨平​​臺。

這是一個以前的答案大約在.net做的變焦效果與GDI +一種相似的-問題:

Auto sizing zoom on an image in .NET

這應該給你做這種顯卡工作的開始在.Net中(它就像開源一樣)。

更新:如果你想呈現XPS文檔(很容易),那麼你應該使用WPF。但是,這種選擇將有效地消除通過Mono使應用程序跨平臺的可能性,至少在短期內是如此。

另一種方法是將您的文檔導出爲PDF文件,或使用Adobe Acrobat將您的XPS文檔轉換爲PDF文件。這裏是一個CodeProject示例的鏈接,完整地在C#/ .Net 2中呈現PDF。0或以上:

http://www.codeproject.com/KB/showcase/pdfrasterizer.aspx

此代碼後,您的WinForms應用程序呈現一個PDF文件作爲位圖的集合(每個頁面),並從那裏它是一個相對簡單的事情中顯示這些位圖你描述的方式(縮放和一切)。由於該項目將使用.Net 2.0,因此它應該在沒有任何修改的情況下在Mono中運行。

+0

這是一個開源項目的一部分,Mono在這裏肯定是個問題。 – Amirshk 2009-09-28 11:05:55

+0

我看到WPF的優點是將我的內容導出爲XPS,然後將文檔控件用於其餘的我。在WinForms中有沒有已知的技術? – Amirshk 2009-09-28 11:09:48

+0

@Am:不,我想你必須編寫自己的XPS到位圖渲染例程,或購買第三方組件來完成此操作。另一種方法是使用PDF文件(請參閱我的更新)。 – MusiGenesis 2009-09-28 13:58:58

2

這聽起來像你會更好的去WPF路線。你對「表單」的外觀有更好的控制。

你想要做的是在用戶控件或其他東西中定義每個「頁面」,然後你可以顯示每一個你喜歡的。 WPF可以爲你處理縮放,你所要做的就是把它連接起來(查看轉換)。我看不到WinForms這樣做。我建議在codeplex上使用looking at this project

+0

頁面將如何完成?你有一個簡單的例子嗎? – 2009-09-27 21:14:48

+1

@Chris:你可以用WinForms和GDI +輕鬆地做這類事情。在WPF出現之前,可以在Windows中做圖形。 – MusiGenesis 2009-09-28 00:30:58

0

TabControl不會做你想要的東西?

+0

否,選項卡控件具有非常不同的顯示。我喜歡做的更像是一本書 – Amirshk 2009-09-27 21:29:20

0

這聽起來像你試圖做的是使一個應用程序的行爲像一個網頁。只需添加一個WebBrowser控件就足夠了?

+0

不,網頁瀏覽器控制不是我想要完成的外觀和感覺。 – Amirshk 2009-09-28 11:07:39