2016-07-20 162 views
0

我正在繪製PDFSharp文檔中的100 x 100像素的圖像。PDFsharp繪製圖像在72 DPI,如果更多分辨率繪製「更小」

該圖像是使用得出:

g.DrawImage(image, new Point(x, y)); 

這裏的問題是,如果我在同一個座標x,y繪製一個矩形,並開始使用100×100作爲dimensiones ......矩形比圖像大。

如果我在DrawImage中使用其他重載,設置容器矩形,圖像適合矩形,但它會丟失質量(它被放大)。

The logo in the PDF looks like this

我認爲這是不同的分辨率或類似的東西的問題。

任何想法?

更新:我將圖像大小調整爲133x133以適合100x100矩形。這種差異的原因是什麼? 33%的差異。

我的解決方案:當檢索圖像並對其進行縮放以適合矩形時,需要考慮圖像的大小是否在像素中,並且在繪製PDF時是以點爲單位。如果你的圖像是96 DPI,你需要增加它的尺寸乘以「96/72」(這是我得到的33%),這樣你就會看到你的期望(即使你使用容器矩形繪製它或者只是起始座標)。

設置image.Interpolate = false;禁用抗鋸齒功能並增加小圖像的清晰度。

+0

更新主題標題的時間:PDFsharp(s爲小寫)以正確的大小繪製圖像,但不是您期望的大小。將圖像設置爲72 DPI,圖像將填充矩形。 –

+0

你的「解決方案」沒有多大意義。 PDFsharp使用點作爲默認單位,一點是1/72英寸。如果您繪製圖像時未指定大小,則將以圖像文件中指定的大小(對於在Windows下創建的許多圖像爲96 DPI)繪製圖像。 「點」不是像素,它是1/72英寸。我不建議調整所有圖像的大小,以便能夠在不指定大小的情況下使用「DrawImage」。 –

+0

不...我的圖片比較大......我將它調整到100x100,現在我將它調整到133×133(如果它是96Dpi)以適合100x100點的平方。用或不用指定大小繪製它都是不相關的。 – Romias

回答

0

PDF中沒有「像素」。 DrawImage具有允許以特定尺寸繪製圖像的重載。

如果大小被忽略(與您一樣),大小將由圖像的DPI設置決定。難道你的形象設置爲96 DPI?

矩形100x100使用點 - 每英寸有72點。

設置尺寸時圖像不會丟失質量。 「質量損失」取決於觀看者的縮放級別。

您可以設置提示以防止Adobe Reader對圖像進行消除鋸齒。

更新:
設置image.Interpolate = false;禁用消除鋸齒。

+0

好吧,如果您在133x133的正方形中顯示100x100的圖片,則確實可以拉伸圖片。因此,在這種情況下,最好從133x133圖像開始,並且不要拉長圖像。爲此,我需要考慮圖像轉換比(96/72 = 1.333)。謝謝。 – Romias

+0

@Romias PDF本質上是一種矢量格式,不管圖像是100x100像素還是133x133像素,它都沒有區別。那麼,133x133像素的質量本質上更高,但「拉伸」是在繪製圖像時發生的,具體取決於在PDF查看器中設置的縮放級別。 PDF使用點和點只是一個單位,如釐米或毫米或英寸。無論您選擇哪種圖像尺寸,在屏幕上繪製時都會拉伸。 –

+0

我明白了......我不假裝看到600%的清晰圖像。但要知道它是如何工作的,我可以進行這種轉換,以便在屏幕和打印頁面的大小(A4)上有更清晰的圖像。 – Romias