2011年11月30日 星期三

[C#] 畫縮圖詭異的情況

 Peggy Yang的學習筆記




因為工作上的需要,要把使用者手繪的圖先處理為縮圖,再印至出來。
不過就在印出來的時後出現讓我很confuse的事情。

*_Image 是原圖檔

Image printImage = _Image.GetThumbnailImage(
                                                            Width,
                                                            Height,
                                                            null,
                                                            IntPtr.Zero
                                                       );
pGraphics.DrawImage(printImage, new Point(pLocation.X, pLocation.Y - 8));

這樣的結果在我 win xp 32bit的環境下,列印得情況有誤,如下圖(上方手繪的軌跡圖):












一模一樣的程式在我 win 7 64bit的環境下,列印得情況正確,如下圖(上方手繪的軌跡圖):














這樣我非常的不開心,怎麼會發生這種[掉漆]的情況,明明一樣的code竟然有不同的反應。
本來想要放棄的,但是這是要安裝在客戶端的應用程式,誰知道使用者的環境是什麼情境,讓我心裡擔憂的很,後來左查右查,上試下試,一度懷疑是GetThumbnailImage的問題,也懷疑是解析度的問題,try到最後就從DrawImage下手,終於找到一勞永逸的方法。

只要DrawImage在的方法裡,指定畫圖的寬及高即可。

Image printImage = _Image.GetThumbnailImage(
                                                             Width,
                                                             Height,
                                                             null,
                                                             IntPtr.Zero
                                                 );
pGraphics.DrawImage(printImage, pLocation.X, pLocation.Y - 8, printImage.Width, printImage.Height);

2 則留言: