2012-05-04 11 views
0

私はユーザーにカウントダウンを示す画像を渡そうとしています。このため、別のスレッドを使用しています。カウントダウンタイマーを開始するタイミングをチェックしています。その場合、6秒ごとにイメージを描画します。低品質の画像をラベルに入れます

迷惑なのは、描画されたイメージをUIに渡すと、イメージの品質が変更され、ユーザーに不愉快に見えます。

これは図面を扱う私の小さなスクリプトです:上記のセクションで

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秒ごとに描画する必要がある画像を表します。 - gは、メインウィンドウに戻った画像のGraphicsオブジェクトです。

また、gのプロパティを変更して試しましたが、ポジティブな効果はありませんでした。

戻ってきた画像の品質を変えずに、正しく動作させるにはどうすればよいですか?任意のヒント/アドバイスを歓迎します。

+0

なぜあなたは高品質に見えるようにすべての魔法のコードをコメントアウトしましたか? –

+0

それは違いがないので。画像の品質は、「魔法のコード」を使用している場合でも同じです。 –

答えて

0

私の会社ではグラフィックデザイナーの視点から、
というラベルに収まるようにイメージをトリミングする必要があります。1.処理能力を節約してパフォーマンスを向上させます。
2.それはよりよく見えますか?

に関して
+0

まあ...私は何もサイズを変更していないので、作物を作る必要はないと思います。しかし、私はこれに関するいくつかのヒントを検索し、試してみます。 –

+0

全く何の結果も得られていません... –

4

Drawing2D.SmoothingModeは、例えばGraphics.DrawEllipseGraphics.DrawLineなどの2Dベクトル描画方法に適用されるので。

描画ビットマップには影響ありません(Graphics.DrawImage)。 .NET documentationから

平滑化モードは線、曲線かどうかを指定し、充填領域のエッジは(別名アンチエイリアシング)を平滑使用します。

  1. イメージのすべての可能な方向をプリレンダリングし、その後、ちょうどあなたの画像をレンダリングするために.NET vector drawing methodsを使用し、各ダニ
  2. で異なるImageオブジェクトを表示:あなたはこの時点で2つの選択肢があり

事前レンダリングされたビットマップを使用する代わりに使用できます。

あなたが変換している実際のイメージを知らないと、私はより適切であるとは言えません。

関連する問題