2012-04-17 2 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'가 블록을 빠져 나오기 때문에'Gfx.Dispose();'는 필요 없습니다. – Marco

+1

또한 제작하려는 예제 이미지가 있습니까? 더 간단한 작업이있을 수 있습니다. –

답변

0

최고 품질의 설정에서도 200 포인트 만 드로잉해도 성능상의 문제가 발생하지 않아야합니다. 코드를 사용하여 시스템에서 1 초에 약 40000 포인트를 그릴 수 있습니다.

SelectedPoints가 Point[] 또는 List<Point>이거나 다른 효율적인 유형이라고 가정하면 FontFacade.Large 호출이 의심됩니다. 매번 새로운 Font 인스턴스가 생성됩니까?

편집 :

는 실행 new Font("Arial", 8) 200 포인트를 사용하여 수정 된 코드는 내 시스템에 약 20 밀리 초 소요, 그래서 문제를 일으키는 뭔가가있을 수 있습니다. 시스템에서 코드를 실행하는 데 시간이 얼마나 걸립니까? 완료되면

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

생성 된 글꼴 개체

그 문제의 원천이 될 것 같지 않지만 나는 또한 하나의 인스턴스 만 생성되도록 루프 외부로 이동 것, 배치되어야한다.

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

원본 비트 맵의 ​​크기는 무엇이며 PixelFormat은 무엇입니까?

SelectedPoints는 어떤 유형입니까?

+0

예 새로운 글꼴 instace가 생성되었습니다. – Guddu

+0

@Guddu, 시스템에서 코드를 실행하는 데 얼마나 걸립니까? OriginalBitmap의 크기는 무엇이며 PixelFormat은 무엇입니까? SelectedPoints는 어떤 유형입니까? – Anlo

관련 문제