Q&A

  • Re: 하나의 Image 컴포넌트에 여러개의 이미지들을 나열하는 방법은?
안녕하세요. 최용일입니다.



리스트박스에 이미지를 그대로 넣는가 아님 이미지파일의 패스만 넣는가는 잘 모르겠



지만 이미지객체가 가지고 있는 캔버스의 Draw메소드를 이용하세요.



var

Bitmap: TBitmap;

X: Integer;

begin

Bitmap := Bitmap.Create;

X := 0;



Bitmap.LoadFromFile(...1st image file...);

Image1.Canvas.Draw(X, 0, Bitmap);

X := X + Bitmap.Width;



Bitmap.LoadFromFile(...2nd image file...);

Image1.Canvas.Draw(X, 0, Bitmap);

X := X + Bitmap.Width;



...

Bitmap.Free;

end;



^^ 항상 즐코하세요.



유상 wrote:

> 공통다이얼로그 박스에서 불러오는 이미지들을 listbox에 차례로 넣고 버튼(미리보기..)

> 을 누르면 listbox안에 있는 이미지들을 모두 다 폼에 나열(순서대로 가로로)할수 있게 해야 하는데 좋은 방법을 알려주세요..

> image컴포넌트에는 하나의 이미지 밖에 들어가질 않더군요..

>

3  COMMENTS
  • Profile
    유상 2000.08.24 04:55
    에러가 나요...

    Bitmap.LoadFromFile(...1st image file...);

    ()안의 image는 파일 경로를 말한는건가요..? 아님 이미지 객체를 말하는 건가요?

    그리고 리스트박스에는 파일이름만 있으며 만약 5개가 있다면 미리보기 버튼(예)을 눌렀을경우 5개의 이미지들이 모두 나열 되어야 하는데..그리고 용일님이 말하신데로 했는데 이미지들이 나타나질 않아요..

    좀 더 자세히(주석좀..요)알려주시면 더욱 감사..꾸벅.

    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 리스트박스에 이미지를 그대로 넣는가 아님 이미지파일의 패스만 넣는가는 잘 모르겠

    >

    > 지만 이미지객체가 가지고 있는 캔버스의 Draw메소드를 이용하세요.

    >

    > var

    > Bitmap: TBitmap;

    > X: Integer;

    > begin

    > Bitmap := Bitmap.Create;

    > X := 0;

    >

    > Bitmap.LoadFromFile(...1st image file...);

    > Image1.Canvas.Draw(X, 0, Bitmap);

    > X := X + Bitmap.Width;

    >

    > Bitmap.LoadFromFile(...2nd image file...);

    > Image1.Canvas.Draw(X, 0, Bitmap);

    > X := X + Bitmap.Width;

    >

    > ...

    > Bitmap.Free;

    > end;

    >

    > ^^ 항상 즐코하세요.

    >

    > 유상 wrote:

    > > 공통다이얼로그 박스에서 불러오는 이미지들을 listbox에 차례로 넣고 버튼(미리보기..)

    > > 을 누르면 listbox안에 있는 이미지들을 모두 다 폼에 나열(순서대로 가로로)할수 있게 해야 하는데 좋은 방법을 알려주세요..

    > > image컴포넌트에는 하나의 이미지 밖에 들어가질 않더군요..

    > >

  • Profile
    최용일 2000.08.24 04:55
    안녕하세요. 최용일입니다.



    흠~



    Bitmap := Bitmap.Create; // <=== 이부분 혹시 확인도 안해보구 그대로 코딩하지는



    않으셨는지... 제실수인데... Bitmap := TBitmap.Create; 이게 맞져...



    var

    I, X: Integer;

    Bitmap: TBitmap;

    begin

    Bitmap := TBitmap.Create;

    try

    X := 0;

    for I := 0 to ListBox1.Items.Count - 1 do

    begin

    Bitmap.LoadFromFile(ListBox1.Items[I]);

    Image1.Canvas.Draw(X, 0, Bitmap);

    X := X + Bitmap.Width;

    end;

    finally

    Bitmap.Free;

    end;

    end;



    LoadFromFile 이 메소드에는 반드시 풀패스가 들어간다는거 잊지마세여



    ^^ 항상 즐코하세요.



    유상 wrote:

    > 에러가 나요...

    > Bitmap.LoadFromFile(...1st image file...);

    > ()안의 image는 파일 경로를 말한는건가요..? 아님 이미지 객체를 말하는 건가요?

    > 그리고 리스트박스에는 파일이름만 있으며 만약 5개가 있다면 미리보기 버튼(예)을 눌렀을경우 5개의 이미지들이 모두 나열 되어야 하는데..그리고 용일님이 말하신데로 했는데 이미지들이 나타나질 않아요..

    > 좀 더 자세히(주석좀..요)알려주시면 더욱 감사..꾸벅.

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > 리스트박스에 이미지를 그대로 넣는가 아님 이미지파일의 패스만 넣는가는 잘 모르겠

    > >

    > > 지만 이미지객체가 가지고 있는 캔버스의 Draw메소드를 이용하세요.

    > >

    > > var

    > > Bitmap: TBitmap;

    > > X: Integer;

    > > begin

    > > Bitmap := Bitmap.Create;

    > > X := 0;

    > >

    > > Bitmap.LoadFromFile(...1st image file...);

    > > Image1.Canvas.Draw(X, 0, Bitmap);

    > > X := X + Bitmap.Width;

    > >

    > > Bitmap.LoadFromFile(...2nd image file...);

    > > Image1.Canvas.Draw(X, 0, Bitmap);

    > > X := X + Bitmap.Width;

    > >

    > > ...

    > > Bitmap.Free;

    > > end;

    > >

    > > ^^ 항상 즐코하세요.

    > >

    > > 유상 wrote:

    > > > 공통다이얼로그 박스에서 불러오는 이미지들을 listbox에 차례로 넣고 버튼(미리보기..)

    > > > 을 누르면 listbox안에 있는 이미지들을 모두 다 폼에 나열(순서대로 가로로)할수 있게 해야 하는데 좋은 방법을 알려주세요..

    > > > image컴포넌트에는 하나의 이미지 밖에 들어가질 않더군요..

    > > >

  • Profile
    최용일 2000.08.24 04:56
    네~ 아래와 같이 하시면 되겠네요. for문으로 리스트박스의 아이템숫자만큼 돌리시면



    되겟네여. TBitmap.LoadFromFile 메소드에 들어가는 파일이름은 풀패스로 적어주셔야 합



    니다. 이미지 포멧이 .bmp가 아니라면 TIcon, TJpegImage, ... 등을 이용하시구요...



    유상 wrote:

    > 답변감사합니다.

    > 리스트박스에는 파일의 이름만 들어갑니다.

    > 하지만 늘 고정적인 갯수가 들어가 있지 않고 사용자가 열어본 갯수만큼 이미지파일의 이름이 들어가 있습니다.

    > 마찬가지인가요?

    >

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > 리스트박스에 이미지를 그대로 넣는가 아님 이미지파일의 패스만 넣는가는 잘 모르겠

    > >

    > > 지만 이미지객체가 가지고 있는 캔버스의 Draw메소드를 이용하세요.

    > >

    > > var

    > > Bitmap: TBitmap;

    > > X: Integer;

    > > begin

    > > Bitmap := Bitmap.Create;

    > > X := 0;

    > >

    > > Bitmap.LoadFromFile(...1st image file...);

    > > Image1.Canvas.Draw(X, 0, Bitmap);

    > > X := X + Bitmap.Width;

    > >

    > > Bitmap.LoadFromFile(...1st image file...);

    > > Image1.Canvas.Draw(X, 0, Bitmap);

    > > X := X + Bitmap.Width;

    > >

    > > ...

    > > Bitmap.Free;

    > > end;

    > >

    > > ^^ 항상 즐코하세요.

    > >

    > > 유상 wrote:

    > > > 공통다이얼로그 박스에서 불러오는 이미지들을 listbox에 차례로 넣고 버튼(미리보기..)

    > > > 을 누르면 listbox안에 있는 이미지들을 모두 다 폼에 나열(순서대로 가로로)할수 있게 해야 하는데 좋은 방법을 알려주세요..

    > > > image컴포넌트에는 하나의 이미지 밖에 들어가질 않더군요..

    > > >