C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[51576] Re:Re:Re:Re:그림 로드하고 바탕은 투명하게보이기
초보프로그래머 [] 1581 읽음    2007-12-12 02:53
제가원하던 것입니다
정말 감사합니다 복받으실거에요
캡락이capslock맞아요
복받으세요

장성호 님이 쓰신 글 :
: 허걱  초보한테 배우실려구요? ㅋㅋ
:
: [먼저 알것]
: 1. 먼저 알아두셔야 할것은  Window 운영체제에서
: 화면에 무엇인가 그리려면 Form 즉 윈도우가 있어야 합니다.
: DC라는것을 통해 그것을 제공하지요
:
: 2. TImage컨트롤에 대해
: TImage는 VCL Graphic 컨트롤로서
: 어떤  Window Control의  DC에 자신이 가진 image 정보를 그릴뿐
: 스스로 화면에 자신을 타나내지 못합니다.
: 앞에 말한 원리대로 윈도우 핸들을 가지고 있지 않기 때문이죠
:
:
: [문제 해석]
: 그럼 이제 원하시는것이 무엇인지 살펴보겠습니다.
:
: 1. "캡락버튼을 누르면 그림이 윈도우없이 화면에 띄우는거하구요"
:     
:     -  "캡락버튼"이 뭔가요? 그냥 버튼으로 생각하겠습니다.
:     -  "윈도우 없이 화면에 ..."   --> 사각형의 윈도우 Frame이 없었으면 한다는 뜻이겠죠?
:
: 2. "어떤 새로운 창이 뜨던 항상 위에나타나도록 하려고..."
:    - 다른 윈도우 보다 항상 위에 있어야 한다는 뜻이죠?
:
:  문제 해석이 제대로 되었습니까?
:
:
:
: [풀어가기]
:
:
: 1. 먼저 폼이 보이지 않게 하기
:    TImage를 이용하겠습니다.
:    그리고 window의 transparent 기능을 이용해서 해보도록 하죠
:
:    1.1 TForm위에 TImage를 하나 올립니다.
:    1.2 TImage에 원하는 Image를 하나 Load합니다.
:    1.3 폼의 크기와 TImage의 크기가 똑같게 Form의 AutoSize=true로 ..
:    1.4 폼의 상단 캡션바를 없애기 위해 BorderStyle=bsNone으로 합니다.
:
:    1.5 폼의 TransparentColor=true로 하시구요
:    1.6 폼의 TransparentColorValue를 Image에 있는 색상중 바깥 가장자리에 있는 색상으로 선택합니다.
:
:    그런다음 run해보세요 그럼 폼의 프레임은 없이
:    그림만 화면에 나타날것입니다.
:
:
: 2. 폼의 화면의 항상 맨위에 띄우기
:    2.1 먼저 폼의 style을 FormStyle=fsStayOnTop 로 하십시요
:        이와같이 하면 일단 화면의 맨위에 띄워집니다.
:        완벽하지는 않습니다. 작업관리자같이 최상위로 뜨는 다른 윈도우에는 가려지게 되죠
:
:
:
: [추신]      
: 폼을 BorderStyle을  bsNone으로 하면 폼의 맨상단의 클릭해서 움직이는 캡션바가 사라집니다.
: 즉 품을 클릭해서 움직을수 없겠죠
:
: 이때는 TImage를 클릭했을때 같은 효과가 나도록 코딩해주시면 됩니다.
:
: void __fastcall TForm1::Image1MouseDown(TObject *Sender,
:       TMouseButton Button, TShiftState Shift, int X, int Y)
: {
:     ReleaseCapture();
:     this->Perform(WM_SYSCOMMAND,0xf012,0);
: }
: //---------------------------------------------------------------------------
:
:
: 문제에서 캡락버튼이 이해가 아직 잘 안됩니다.
:
: 키보드의 CapsLock 버튼을 얘기하는것인지요?
:
:
: 그럼...
:
:
:
:
:
:
:
:
:
: 초보프로그래머 님이 쓰신 글 :
: : 담변 잘보았습니다 감사하구요
: : 제가하려는것은요 캡락버튼을 누르면 그림이 윈도우없이 화면에띄우는거하구요
: : 어떤 새로운 창이 뜨던 항상 위에나타나도록 하려고합니다
: : 그리구요 답변에 함수를 폼에다가넣어야되나요?아니면
: : TImage1 에다가 넣어야되나요?
: : 캡락버튼누르면 뜨도록할에정이니깐 제생각엔
: : 폼에다 넣어야되는가싶은데 폼에다가 넣어야되나요?
: : 장성호님을 사부로모시고 십습니다;;
: :
: :
: : 장성호 님이 쓰신 글 :
: : : 질문에 대한 이해가 잘 안오네요
: : : 정확히 무엇을 하려고 하시는지?
: : :
: : :
: : : 1. 진짜 말그대로 바탕화면에 draw하고자 하신다면?
: : :     바탕화면 Canvas의 DC를 얻어서 그리셔야 합니다.
: : :   
: : :    HDC dc=    GetDC(0);  // 바탕화면의 DC입니다.
: : :    TCanvas *Can=new TCanvas;
: : :    Can->Handle=dc;
: : :
: : :    Can->MoveTo(0,0);
: : :    Can->LineTo(100,100);
: : :
: : :    이런식으로 바탕화면의 DC를 TCanvas의 Handle로 설정해서
: : :    TCanvas를 이용해 그림이나 글씨등 여러가지를 마음대로 그릴수 있습니다.
: : :
: : : 2. 바탕화면에 마우스로 그림을 그리고자 할때..
: : :    Form을 Screen size로 만드시구요
: : :    현재 window의 화면을 캡쳐해와서 Form위에 그려줍니다.
: : :    그런다음 폼위에다가 그림을 그리죠
: : :  
: : :    그럼 꼭 바탕화면에 그림을 그리는것 같죠
: : :    보통  프레젠테이션을 위한 펜 같은 기능을 이런식으로 만듭니다.
: : :
: : :
: : : 3. 그밖에..
: : :     Form의 Transparent 기능을 이용해서  특정색상은 모두 바탕 이미지가 보이도록한후
: : :     Form위에 그리는 방식도 있습니다.
: : :
: : : 4. 기타..
: : :
: : :
: : : 그럼..    
: : :  
: : :
: : :
: : : 초보 프로그래머 님이 쓰신 글 :
: : : : 그림을 로드하려고하는데요 Timage로 그림을 불러왔거든요
: : : : 폼없이 모니터화면에 그려주고 바탕은 투명하게하려고하거든요
: : : : .................................
: : : : .       A                      .
: : : : .         A                    .
: : : : .................................
: : : : 이런식으로 있다고 가정하면 A라는 글자이외에바탕부분을
: : : : 투명하게보이려고합니다
: : : : 폼없이 화면에바로그려줄려고요 그림을 폼에다가불러왔는데
: : : : 그림이 바탕이흰색이어서 그림이외바탕색이 하얀색으로나오고
: : : : 창크기랑 그림크기랑 싸이즈가 안맞더라구요
: : : : 자동으로 윈도우화면이랑 그림크기랑 같도록하고싶습니다
: : : : 아직초보라서 모르는게너무많아요 한번만 제대로 알려주시면 기억하는체질이라서
: : : : 답변이 너무 절실합니다
: : : : 질문도 쉽게풀어서질문을 안적은것같기도하지만
: : : : 아니면 전체소스를 주시면 감사하고요

+ -

관련 글 리스트
51568 그림 로드하고 바탕은 투명하게보이기 초보 프로그래머 1373 2007/12/11
51572     Re:그림 로드하고 바탕은 투명하게보이기 장성호 1583 2007/12/11
51573         Re:Re:그림 로드하고 바탕은 투명하게보이기 초보프로그래머 1392 2007/12/12
51575             Re:Re:Re:그림 로드하고 바탕은 투명하게보이기 장성호 2300 2007/12/12
51576                 Re:Re:Re:Re:그림 로드하고 바탕은 투명하게보이기 초보프로그래머 1581 2007/12/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.