Q&A

  • TWebBrowser 컨트롤 캡쳐해서 비트맵으로 가져오기
안녕하세요.



(표현 능력이 딸려서 질문을 제대로 하지 못한 것 양해해주세요

그리고 단어나 어휘가 부적절해서 죄송..)



너무 많이 급해서 이사이트 저사이트 질문하고 다니고 있는데요..

원하는 답변을 얻지 못해 이렇게 여기에도 글을 씁니다.



TWebBrowser 컨트롤 캡쳐해서 비트맵으로 가져오기

OCX는 WM_PAINT 메시지 보내는 것으로는 안되더군요...

그리고 중요한것은 TWebBrowser 컨트롤이 숨겨져 있더라도

캡쳐가 되어야 합니다..



화면캡쳐같은 것으로는 해결할 수가 없었죠.

문제는 우선 캡쳐하려는 것이 숨겨져있고...

캡쳐할것들이 다른 것에 가려져 캡쳐되어서는 절대 안되니까요.



만들고 시픈걸 말씀드리는게 더 빠르겠습니다.(? 저의 딸리는 어휘, 표현력)

간단한 HTML 에티터는 아니고요 비슷한 것을 만드려고

하는데요.

또 HTML을 전문적으로 분석하고자 하는 것은 아니고요

단지 소스를 파싱하여 HTML코드대로 객체(한개만)를 그려내는

복잡하고 어렵고 고된 작업인것같아서요

이 방법을 택한것입니다.

그럼 다음의 내용만이라도 도와주세요.

뭐냐하면요.

//바보같은 설명 시작...

만약 버튼의 그림을 얻고 싶다면



webbrowser.navigate('about:');



이렇게 하면 webbrowser컨트롤에 버튼만 나타납니다.

버튼말고 따른 건 넣을 생각 없어요..

고렇게 나타난 버튼을 그림(bitmap)으로 가져오고 싶은데..



고땐 그럼 WebBrowser컨트롤 전체를 캡쳐해야겠죠.

(버튼 주변에 페이지에 허연 여백같은 것은 상관하지 않음)



고래서 비트맵으로 캡쳐해서 image1.picture.bitmap에다

대입하면 끝인데~(그냥 초보라 이렇게 생각했습니다)

근데 WM_PAINT로 센드메시지하면



OCX는 아예 캡쳐가 되지 않더군요(허옇게만 나옴)

(글구 TButton 컴포넌트 같은 경우도 버튼이 숨겨져 있을때 캡쳐가 되지

않구여..반쪽만 숨겨있어도 캡쳐가 되지 않습니다)



여기서 OCX컨트롤이 숨겨있던 걸쳐있던 어떻게 해서라도 캡쳐를 해야하는데.

어떻게 해야 하는지 전혀 모르겠어요. --;



다른것은 다 필요없고 버튼이 webbrowser컨트롤에 들어 가있는 모습을

사진으로 한장만 찰칵 찍는 법만 가르쳐 주심됩니다..

굵은 글씨로 된거만 알려주심됩니다.



아까 html코드에 300x300으로 크기로 정해놨으니

제가 이제 버튼의 그림만 잘 오려내는 코드를 쓰면 되겠죠



죄송합니다.표현력이 부족해서 글이 길어집니다..

말도 안되는 글 읽어주셔서 정말 감사드립니다.



개념으로 설명해주시면 넘 어렵구여 소스도 쬐금만 써주세요.



꼭 도와주세요...고수님들.. 유명하신분들..



===아래글은 다른 곳에서 질문 했던 내용입니다======

> 안녕하세요?

> HTML 문서를 페이지 단위가 아닌 객체 단위로 캡처하실려고

> 하는 것입니까?

> 사실 저도 어떻게 해야 할지 잘 모르겠습니다.

> 이미지 같은 경우는 DOM를 사용하거나 아니면 HTML 문서를

> 파싱해서 처리할 수 있는데, 버튼이나 표과 같은 객체를

> 캡처하는 것은 어려울 것 같습니다.

> 캡처 시점이 사용자가 선택했을 때 해당 객체를 캡처나느냐

> 아니면 코드 상으로 캡처하느냐에 따라서도 문제의 성격이

> 틀려질 수도 있을 것 같습니다. 그리고 화면의 내용 자체를

> 캡처할려고 하는지 아니면 객체의 형태만 비슷하게 이미지

> 처리할려고 하는지에 따라서 처리 방법이 달라질 수 있겠죠!

> 어째든 구현이 가다로울 것 같습니다.

> 별 도움이 안될 것 같습니다.

>

>

> > 질문요약===IE 5.0 ActiveX내의 객체별로 이미지(형상 or 모습)를 비트맵으로 캡쳐해오기===

> >

> > 궁금합니다. 도와주세요.

> > TWebBrowser 컨트롤이 MS 인터넷 익스플로어 컨트롤이잖아요.

> > 글구..

> > webbrowser1.navigate('about:');

> >

> > 이렇게 코드 넣으면 webbrowser 컨트롤에 버튼이 나타나잖아요.

> > 이외에 다른 소스를 넣게 되면 브라우저 에 나타나죠.

> > 그렇게 HTML에 의해 나타난 버튼이나 그림등을 캡쳐해오고 싶습니다.

> >

> > 아니면 캡쳐방식이 아닌 Webbrowser 컨트롤의 oleobject.document.

> > 프로퍼티안(하위)으로 깊숙히 들어가 쉽게 얻어 오는 방법이 고난이도

> > 의 방법이면 더욱 좋구요..(그런게 있는지는 잘모름--; 초보)

> >

> > 윈도화면이나 화면전체 캡쳐오는법은 델코나 여러 모임에서 많이 봐서

> > 배웠긴 했는데..

> >

> > 하나의 컨트롤만 따로 캡쳐해오는 법을 알고 싶습니다.

> >

> > IE 5 ActiveX을

> > 버튼, 패널, 메모, 컨트롤등의 형상을 bitmap으로

> > 캡쳐하는 방법으로 시도 해보았었는데

> > 컨트롤의 숨겨져있을때 캡쳐하게 되면 숨겨진 부분이 하얗게 나타나는 문제가 있더군요. 컨트롤이 숨겨져 있다 하더라도 해당 컨트롤의 전체 형상을 얻어 오고 싶은 것입니다.

> > 특히 ActiveX는 어찌 해야 하는지 하나도 모르겠습니다.

> >

> > TWebBrowser 컨트롤의 img, div의 내용 표의 전체모양을 비트맵으로여.

> >

> > 죄송합니다. 말 재주가 없어서..

> > 개념으로 설명해주시면 넘 어렵구여 소스도 쬐금만 써주세요.

> >

> > 도와주세요..좋은하루 되세요.



1  COMMENTS
  • Profile
    Hoon Reader 2000.08.07 10:10
    URL의 개념을 알아야 할듯싶습니다.

    Web page라는건 HTML(HyperText Markup Language)를 사용합니다. 이는 Text에 대해서는 RTF처럼 정밀한 표현을 하지만 Img에 대해서는 식으로 사용합니다.

    즉, Image의 본질은 다른 곳에 존재한다는 말이죠.

    그러니 Web page내에서 구체적인 Image 본질에 대한 정보는 없습니다.



    TWebBrowser를 통해서 Img나 Snapshot 화면을 얻기는 어려워 보입니다.

    그러나 그림에 대한 URL을 직접 Access해서 다운로드 할 수 있겠끔하주는 메커니즘이 있을 것 같군요.

    물론 저는 안해봤습니다.