2014-10-20 71 views
-1

我正在研究一個項目,並且我必須向用戶顯示圖像。實際上圖像是動態創建的位圖圖像(A4大小的頁面,必須打印到A4頁面),有時它具有多個頁面,我必須給用戶預覽。那麼我怎樣才能在沒有第三方應用程序的Windows應用程序中執行此操作?或者有什麼比這更好的解決方案。但是我必須創建該位圖圖像以在所有情況下創建該頁面。在Windows應用程序中顯示具有A4大小的圖像

+1

您是否考慮過將WPF和DocumentViewer與FixedDocument結合使用。您可以將圖像放入固定頁面的容器中,並將固定文檔填充到DocumentViewer中。你得到縮放,縮放等免費;) – 2014-10-20 07:46:32

+0

謝謝..這是我所需要的。 – Sivajith 2014-10-20 09:52:01

+0

我的圖片是動態創建的,並且沒有保存到任何地方。你能指導我一些更多的信息嗎? – Sivajith 2014-10-20 10:14:28

回答

0

A4是210×297mm的紙張尺寸。

位圖以各種方式創建,但它們以某種方式總是需要像素大小,例如。 210×297像素。

要創建位圖A4你還需要在分辨率,例如100DPI或800DPI決定..

float mmpi = 2.54f; 
int dpi = 150; 
Bitmap A4 = new Bitmap((int) (210/mmpi*dpi), (int)(297/mmpi*dpi)); 
A4.SetResolution(dpi, dpi); 

這將導致12401 X 17539像素,建議使用150dpi分辨率位圖;你可以直接得到它像這樣:

Bitmap A4 = new Bitmap(12401, 17539) 
A4.SetResolution(dpi, dpi); 

要預覽Bitmap你可以將它分配給PictureBox控制的Image

pictureBox1.SizeMode = pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; 
pictureBox1.Image = A4; 

注:

  • 你會碰上內存問題當您嘗試創建一個太大的位圖時。 即使達到200dpi也會拋出異常。
  • 您可能希望通過忽略邊距來減小物理尺寸。
  • 當您打印位圖時,需要考慮的事項有很多。
  • 有可能您無法一次創建多個這樣的大圖像。在創建第二個之前,您可能需要將其中一個存儲到磁盤。
  • 上述代碼將生成適合打印的圖像。顯然這太大了,不能在預覽中顯示。爲此,您必須將其縮小或爲顯示尺寸創建另一個尺寸,可能爲280x351像素。這可能是更好的選擇。您將有一個Paint事件用於顯示控件,另一個用於打印文檔。
+0

感謝您的評論。但我做了頁面創建,現在我需要向用戶顯示該圖像。 – Sivajith 2014-10-20 09:53:07

+0

顯示位圖最直接的方法是將其放入PictureBox中。 – TaW 2014-10-20 10:08:14

+0

您是否解決了您的問題?順便說一句,還有一個不錯的PrintPreview控件 – TaW 2014-10-29 11:27:22

相關問題