2011-09-01 8 views
-1

5 개의 이미지가 저장되어있는 imageList를 사용하고 있는데 그 중 3 개는 .jpg와 2 .bmp입니다.C에서 imageList를 사용할 때 이미지 해상도가 낮습니다

나는 타이머를 사용하여 PictureBox 이미지를 변경하기 위해 이러한 이미지를 사용하고 있습니다 - private int imgIndex = 0;Form 클래스에 설정되어

private void timer1_Tick(object sender, EventArgs e) 
    { 
     pictureBox1.Image = imageList1.Images[imgIndex++]; 
    } 

합니다.

두 가지 문제점이 있습니다. 첫 번째로 그림 상자에 표시된 이미지의 해상도가 매우 화질이 좋지 않고 품질이 좋지 않습니다. 속성을 변경하여이 문제를 해결하려고 노력했습니다. .gif, .png 등 다른 이미지 형식을 사용하고 이미지 크기를 변경하지만 작동하지 않습니다. 더 나은 해상도를 얻으려면 어떻게해야합니까?

두 번째 문제는 타이머가 마지막 이미지에 도달하면 'InvalidArgument = Value of'5 '오류가'index '에 유효하지 않은 응용 프로그램과 충돌합니다. 매개 변수 이름 : index ' imageList에 5 개의 이미지가 있고 디버깅 할 때 private int imgIndex = 0;에서 오류가 발생합니다 어떻게 해결할 수 있습니까?

+2

이미지가 5 개있는 경우 가장 높은 색인은 4입니다. 해상도는 색상 깊이보다 크기 속성에 따라 다릅니다. –

답변

0

0 인덱스 5 개 이미지, 최대 인덱스 크기는해야 4하지 5. 5. 해상도를 들어, 당신이 SizeMode 속성을 설정해야 =이 값에 오류가 있습니다 이유가 있다는 일반

+0

그래서 private int imgIndex를 변경해야합니까? 그렇다면 무엇에? – Ebikeneser

0

MSDN-> " ImageList는 일반적으로 ListView, TreeView 또는 ToolBar와 같은 다른 컨트롤에서 사용됩니다. " ImageList를 사용할 수는 있지만 의도하지 않은 부작용이있을 수 있습니다. ImageList 대신 이미지 목록을 사용해보십시오.

List<Image> images = new List<Image>(); 

// assign images. images.Add(... 

private void timer1_Tick(object sender, EventArgs e) 
    { 
     pictureBox1.Image = images[imgIndex++]; 
    } 
+0

입력 해 주셔서 감사합니다. 그러나 이미지 품질 문제가 해결되었지만 마지막 사진에 도달했을 때 양식이 비정상적으로 문제가 발생합니다. 이것을 어떻게 정렬 할 수 있습니까? – Ebikeneser

+2

if (imgIndex> = imageList1.Images.Count) imgIndex = 0; – beater

관련 문제