2012-05-04 35 views
0

我試圖將向用戶顯示的圖像傳遞給倒計時。爲此,我正在使用一個單獨的線程來檢查倒數計時器應該何時開始,如果是,我每6秒鐘就會畫一個圖像。將低質量圖像轉換爲標籤

令人討厭的是,當我將繪製的圖像傳遞給用戶界面時,圖像的質量發生了改變,而且對用戶來說看起來很糟糕。

這是我的小腳本處理圖中:

Try 
    remainingTime = (#12:04:00 AM# - (DateTime.Now - local_DateTimeclick)).ToString("HH:mm:ss") 
    remainingTimeInSeconds = Convert.ToDateTime(remainingTime).Minute * 60 + Convert.ToDateTime(remainingTime).Second 

    If remainingTimeInSeconds Mod 6 = 0 Then 
     g.ResetTransform() 
     g.TranslateTransform(52, 52) 
     g.RotateTransform(230 - remainingTimeInSeconds/6 * 9) 

     'g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality 
     'g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias 
     'g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic 
     'g.CompositingMode = Drawing2D.CompositingMode.SourceCopy 
     'g.PixelOffsetMode = Drawing2D.PixelOffsetMode. 

     g.DrawImage(Tick, 10, 10) 
    End If 

Catch 
    remainingTime = "Times Up" 
End Try 

在上面的部分, - * local_DateTimeClick *是當倒計時應該開始 所設置的變量 - 是一個位圖這代表我必須爲每6個elipsed秒繪製的圖像 - g是從圖像返回到主窗口的圖形對象。

也嘗試改變g的屬性,但沒有正面影響。

任何人都有任何想法我可以做什麼,使其正常工作,而不會改變返回的圖像的質量?歡迎任何提示/建議。

+0

爲什麼你把所有的魔法代碼註釋掉了,看起來質量很高? –

+0

因爲它沒有區別。如果即時使用「魔術碼」,圖像的質量也是一樣的。 –

回答

0

從圖形設計師的角度來看,在我的公司,我認爲你應該裁剪你的圖像以適應標籤:
1.它通過節省處理能力來提高性能。
2.它看起來更好?!
問候

+0

呃...我沒有調整任何東西,所以我認爲沒有必要製作莊稼。但我會爲此搜索一些技巧並嘗試。 –

+0

根本沒有得到任何結果... –

4

因爲Drawing2D.SmoothingMode僅適用於2D矢量繪圖方法如Graphics.DrawEllipseGraphics.DrawLine

它不影響用Graphics.DrawImage繪製位圖。

.NET documentation

平滑模式指定直線,曲線和填充區域的邊緣是否使用平滑(也稱爲抗混疊)。

你必須在這一點上兩個選項:

  1. 預渲染圖像的每一個可能的方向,然後就在每個刻度
  2. 顯示不同的Image對象使用.NET vector drawing methods來渲染圖像而不是使用預先渲染的位圖。

不知道你正在改變的實際圖像,我不能說哪個更合適。