Q&A

  • [3907연재]그림을 넣는 방법...
제가 듣기로 지시어를 이용한 resource를 사용하여 그림을 넣을 수 있다는데...

어떻게 하는지...????



// 먼저 폼에 이미지를 넣고 그 프로젝트의 리소스를 만들려 하는 메인폼에서 지시어를 통해

// 불러들이면 된다고,,,,,,



이 방법은 어떻게 해야 할지 감을 못잡아서 질문을 드립니다...

1  COMMENTS
  • Profile
    구창민 1999.07.22 19:17
    suezou 께서 말씀하시기를...

    > 제가 듣기로 지시어를 이용한 resource를 사용하여 그림을 넣을 수 있다는데...

    > 어떻게 하는지...????

    >

    > // 먼저 폼에 이미지를 넣고 그 프로젝트의 리소스를 만들려 하는 메인폼에서 지시어를 통해

    > // 불러들이면 된다고,,,,,,

    >

    > 이 방법은 어떻게 해야 할지 감을 못잡아서 질문을 드립니다...



    suezou님 안녕하세요?

    일전에도 올린 내용 같은데 기억이 가물가물..^^;

    아래 내용을 참조해 보시기 바랍니다.



    아래는 하이텔동호회에서 활동중이신 황용호님이 쓰신

    리소스에서 JPEG읽고, 출력하기 입니다.





    /////////////////////////////////////////////////////////////////

    JPEG파일을 리소스로 만들고 그 리소스를 TImage를 이용하여



    출력하려면 다음과 같이 하시면 됩니다.



    우선 리소스 파일을 만들어야 하는데 델파이는 변변한 리소스 에디터를



    제공하지 않습니다. 있어봤자 이미지 에디터 정도겠지요...



    그렇지만 리소스 컴파일러는 제공합니다. brcc32.exe라는 프로그램이죠.



    그래서 .RC파일을 직접 만들어서 컴파일 하여야 합니다.



    우선 빈 텍스트 파일을 하나 만들어서 다음의 한 줄을 써 넣습니다.



    resname 24 DISCARDABLE "JPEGfilename.jpg"



    resname에는 사용하기 원하는 리소스 이름을 넣으시고 JPEGfilename.jpg에는



    리소스로 만들 파일의 풀패스명을 적어 주면 됩니다.



    리소스 파일이 여러개라면 갯수만큼 위의 내용을 추가해 주시면 됩니다.



    24라는 숫자는 리소스 타입의 ID인데 JPEG는 예약된 리소스 타입이 없으므로



    예약된 숫자 + 1로 정한 것입니다. 24이상이면 어떤 수이거나 상관 없는데



    아래 소스의 MakeIntResource내의 인자와 일치해야 합니다.



    여튼 이렇게 만드신 후 확장자를 .rc로 해서 저장합니다. 편의상 MyRes.rc라고



    한다면 커맨드 라인에서 brcc32.exe MyRes.rc라고 치면 MyRes.res파일이 만들어



    집니다.



    그런 후 이제 이 리소스 파일을 프로그램에 추가하여야겠지요.



    프로젝트의 소스를 여시면 {$R *.res}라고 적힌 부분이 있을 겁니다.



    그 밑에 {$R MyRes.res}라고 추가합니다. 여기서 MyRes.res는 brcc32로 만들어진



    리소스 파일 이름입니다.



    이렇게 하셔서 컴파일 하시면 우선 리소스는 실행파일에 포함된 겁니다.



    다음으로...



    리소스에서 JPEG image를 읽어서 TImage 콤포넌트로 출력을 하려면



    다음과 같은 코드를 출력하고자 하는 부분에 넣어 주시면 됩니다.



    TGraphic에는 리소스에서 직접 데이터를 읽어오는 방법을 지원하지



    않으므로 스트림을 이용하셔야 합니다.



    편의상 버튼 클릭 이벤트에서 하는 것으로 하겠습니다. 아래는 소스입니다.



    procedure TForm1.Button1Click(Sender: TObject);

    var

    ResStream : TResourceStream;

    JPEGImage : TJPEGImage;

    begin

    JPEGImage := TJPEGImage.Create;

    ResStream := TResourceStream.Create(hInstance, 'resname',

    MakeIntResource(24));

    try

    JPEGImage.LoadFromStream(ResStream);

    Image1.Picture.Assign(JPEGImage);

    finally

    ResStream.Free;

    JPEGImage.Free;

    end;

    end;



    TJPEGImage를 사용하므로 uses절에 jpeg를 추가하셔야 합니다.



    소스 중 TResourceStream.Create에 있는 resname에다가 위의 .rc파일에서



    지정한 리소스이름을 적어 주시면 됩니다.



    소스가 간단하므로 쉽게 이해가 가실겁니다.



    이렇게 하시면 jpeg파일이 실행파일과 합쳐져 출력됩니다.



    참고가 되셨으면 합니다.



    그럼 이만...