이상적으로해야 할 일은 하나의 이미지를 숨기고 다른 이미지를 표시하는 대신 버퍼 논리를 작성하는 것입니다. 이미지를 표시하기 전에 이미지를로드하는 몇 개의 버퍼를 갖고 이미지 당 새로운 세트가 아닌 실제 필드가 고정 된 숫자로 표시되는 것이 훨씬 좋습니다.
그러나 솔루션에서 필요한 경우 사용자 지정 사용자 정의 컨트롤을 만들어보십시오. 이 같은
시도 뭔가 :
public class customUserControl : UserControl
{
//Store image as a Uri rather than an Image
private Uri StoredImagePath;
public class PictureBoxAdv : PictureBox
{
public PictureBoxAdv()
{
this.VisibleChanged +=new EventHandler(VisibleChanged);
}
}
public Uri Image
{
get { return StoredImagePath; }
set
{
StoredImagePath = value;
if (this.Visible && StoredImagePath != null)
{
this.Image = Image.FromFile(StoredImagePath.AbsolutePath);
}
}
}
public void VisibleChanged(object sender, EventArgs e)
{
//When becomes visible, restore image, invisible, nullify.
if (this.Visible && StoredImagePath != null)
{
this.Image = Image.FromFile(StoredImagePath.AbsolutePath);
}
else
{
this.Image = null;
}
}
}
그래서 당신은 무슨 뜻입니다 : 보이는 상자의 설정 금액을 가지고 있고이 상자에 표시되는 이미지를 변경? 현재 모든 이미지 파일 이름 목록이 있습니다. 기본적으로 스크롤바를 가져 와서 내가 가지고있는 이미지의 크기에 상관없이 최소/최대 값을 설정하고 현재 표시된 이미지를 바꿀 수있었습니다. 내가 이해할 수없는 것은 버퍼 논리입니다. 그것에 대해 자세히 설명해 주시겠습니까? – Splatbang
버퍼링 논리는 간단합니다. 모든 이미지를 List 객체에 저장하고 특정 이미지를 호출하여 다른 이미지를 호출하려면 단순히 imageBox1.Image = Image.FromFile (uiList [2] .AbsolutePath)를 호출하십시오. 원하는 경우 배경 이미지와로드 된 이미지를로드 할 수 있도록 현재 이미지와 교체하는 데 사용할 이미지를 추가로 가질 수 있습니다. 교체하려는 PictureBox에 이미지를로드 할 수 있습니다. –
Corylulu
아하 그건 기본적으로 내가 한 일이다. 나는 폼에 6 개의 그룹 박스와 스크롤 바를 넣는 것을 끝내었다. 내 모든 이미지 경로를 목록에 저장하고 스크롤바 값에 따라 표시되는 이미지가 결정됩니다. 이미지 표시 부분은 별도의 스레드에서 처리됩니다. 도움에 감사드립니다! – Splatbang