2012-04-17 15 views
0

私は画像のサイズ変更、drawStringとFillEllipseを行っています。
nビットマップを表示する必要がある多くのポイント(FillEllipse)があるので、私はforループを使用しています。描かれたビットマップのビットマップの読み込みに時間がかかりすぎる

using (System.Drawing.Graphics Gfx = System.Drawing.Graphics.FromImage(OrginalBitmap)) 
{ 
     Gfx.SmoothingMode = SmoothingMode.HighQuality; 
     Gfx.CompositingQuality = CompositingQuality.HighQuality; 
     Gfx.InterpolationMode = InterpolationMode.HighQualityBicubic; 
     Gfx.PixelOffsetMode = PixelOffsetMode.HighQuality; 

    foreach (var points in SelectedPoints) 
     { 
      Gfx.FillEllipse(
       Brushes.Yellow,new Rectangle(points.X , points.Y, 8, 8)); 
      Gfx.DrawString("M", new Font("Arial",8), 
       Brushes.Yellow, points.X, points.Y); 
      //points.X and points.X are the points that needs to be drawn on bitmap(particular location). 
     }  
    } 
((IDisposable)OrginalBitmap).Dispose; 

ロードがSelectedPointsには多くの点がある場合は、非常に長い時間がかかる:
はここのコードです。 パフォーマンスが大幅に低下し、読み込みに多大なメモリが必要でした。 どうすればいいか教えてください。

ありがとうございます。

+0

明白な示唆は、効果があるかどうかを確認するために品質を変えてみることです。 –

+2

ちょっとした注意: 'using(...)'ブロックの中にいるので、 'Gfx.Dispose();'は必要ありません。 'Gfx'はブロックを抜けるように配置されています。 – Marco

+1

また、作成しようとしている画像の例がありますか、もっと簡単なことがあります。 –

答えて

0

最高品質の設定であっても、実際には200ポイントの描画ではパフォーマンス上の問題は発生しません。あなたのコードを使って、私は自分のシステム上で1秒間に約40000点を描画することができます。

SelectedPointsがPoint[]またはList<Point>または他の効率的なタイプであると仮定すると、私はFontFacade.Large呼び出しを疑うでしょう。新しいFontインスタンスは毎回作成されますか?

EDIT:

が200ポイントでnew Font("Arial", 8)を使用して、変更されたコードを実行するには、私のシステムで約20ミリ秒かかるので、あなたの問題を引き起こしている何か他のものがあることがあります。あなたのシステムでコードを実行するのにどれくらい時間がかかりますか?

Stopwatch timer = Stopwatch.StartNew(); 
[...] 
Debug.WriteLine(timer.ElapsedMilliseconds); 

作成したフォントオブジェクトが完了したら、それはあなたの問題の原因ではないようですが、インスタンスが1つだけ作成されるように、私は、ループの外に移動するに配置する必要があります。

using(Font font = new Font("Arial", 8)) 
{ 
    foreach(var point = SelectedPoints) 
    { 
    [...] 
    } 
} 

PixelFormatとは何のディメンションですか?

どのようなタイプがSelectedPointsですか?

+0

はい新しいフォントインスタンスが作成されました – Guddu

+0

@Guddu、システムでコードを実行するにはどのくらいの時間がかかりますか? OriginalBitmapの次元は何ですか?PixelFormatは何ですか?選択ポイントはどのタイプですか? – Anlo

関連する問題