Microsoft MVP성태의 닷넷 이야기
투명 패널 질문드립니다. [링크 복사], [링크+제목 복사],
조회: 8134
글쓴 사람
SoulToMind
홈페이지
첨부 파일
 

서명을 하는 컨트롤을 작업중에 있습니다.

패널에다가

라벨 텍스트가 포함되어 있는 사용자 컨트롤
패널을 상속받은 투명 패널

위에 2개위 컨트롤을 패널에 추가 해놓은 상태입니다. 라벨텍스트가 아래쪽에 위치해있고 투명패널이 위에 위치에 있어 설정해 놓은 텍스트를 따라쓰는 서명컨트롤이라고 보시면 되겠습니다.

투명 패널은 아래와 같이 적용했습니다.

투명 패널 적용 코드
SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);
BackColor = Color.Transparent;
UpdateStyles();

protected override CreateParams CreateParams
{
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x00000020; //WS_EX_TRANSPARENT
            return cp;
        }
}

protected override void OnPaintBackground(PaintEventArgs e) { }

Paint 이벤트 코드
private void SignatureTransparentPanel_Paint(object sender, PaintEventArgs e)
{
        if (_g == null)
        {
            _g = this.CreateGraphics();
            _g.SmoothingMode = SmoothingMode.AntiAlias;
        }

        if (_image != null)
        {
            using (Graphics g = Graphics.FromImage(_image))
            {
                g.Clear(Color.Transparent);
                DrawLine(g);
            }

           _signaturePanel.DrawImageCompleted();
        }
        else
        {
            // 로드시 기존 Path 정보를 통하여 그리는 부분
            Log.WriteDebug("############################################### SignatureTransparentPanel_Paint ");
            DrawLine(_g);
        }
}

internal void DrawLine(Graphics g)
{
        g.SmoothingMode = SmoothingMode.AntiAlias;
        foreach (LineInfo o in _lineInfoList)
        {
            g.DrawLine(_drawPen, o.OldPt.X, o.OldPt.Y, o.CurPt.X, o.CurPt.Y);
        }
}

마우스로 CreateGraphics 한 Graphics를 이용하여 마우스로 그릴시에는 화면에 표시가 정상적으로 나오는데

Paint 이벤트 시에 문제가 되고 있습니다.

문제가 되는것은 기존에 저장했던 Path(_lineInfoList) 정보를 이용하여
Paint 이벤트에서 DrawLine 메소드를 호출하여 그리고 있는데 이게 보였다가 사라집니다.
저장시 했떤 정보를 불러오면 잠깐 깜박하여 보였다가 사라진다고 보시면 되겠습니다.

투명 패널을 적용한 컨트롤 구조를 변경을 해서 해결을 해야하는지? 어떤 처리가 필요할 거 같은데 구글링 해보아도 해결이 보이지 않아

성태님께 질문 올립니다. 긴글 읽어 주셔서 감사드립니다.









[최초 등록일: ]
[최종 수정일: 1/24/2019]


비밀번호

댓글 작성자
 



2019-01-25 09시27분
이런 유의 UI 문제는 패스하겠습니다. 저도 좀 해봐야 하는 문제이고, 개인적으로 낼 시간이 없습니다. 언제 관심이 생기면 해보겠습니다.
정성태
2019-01-28 10시47분
[SoulToMind] 아 넵 알겠습니다 ^^ 글 읽어 주셔서 감사드립니다.
[guest]

... 61  62  63  64  65  66  67  68  69  [70]  71  72  73  74  75  ...
NoWriterDateCnt.TitleFile(s)
786맨날맑음1/30/200912584WPF를 SmartClient로 배포할순 없을까요? [2]
785정성우12/16/200811830Vista 환경에서 VB6로 개발한 어플리케이션이 IE 통해서는 런칭이 안됩니다.. [4]
783서광원11/20/200812575.NET 어셈블리를 COM에서 사용하도록 변경 했을때 배포는 어떻게 해야 하나요? [3]
782김용환10/14/200812888웹서비스에서 캐시를 사용하고 싶습니다. [3]
781이수정9/5/200811119visual studio 2008 관련 질문입니다. [2]
776신현창8/5/200811430VS2005로 실행시 갑자기 COM+ 등록이 안됩니다. [1]
775땡초7/21/200811621조언을 구하고저 합니다. [2]
774남호진7/19/200812014Visual Studio 2005나 2008에서 서버탐색기에연결된 데이터에서 정보를 끌어... [2]
773지워니7/17/200814240웹서비스로 db2의 데이터가 오질 않아요. [1]
984이영구7/16/201114190    답변글 [답변]: 웹서비스로 db2의 데이터가 오질 않아요.
772다자래7/15/200811523스레드와 이벤트를 이용해서 mssql 서버의 저장프로시져의 레코드 진행률을 표현하는 프로그래스바를 구현하려고하는데....막막 [1]
771guest6/26/200811307[WCF] Self host 만드는 방법. [2]파일 다운로드1
770조조5/27/200811062스마트클라이언트에서 stand-alone 형태를 임베디드형태로 변환시 문제.. [1]
769제영한5/20/200811093배포프로젝트에 대한 조언을 구합니다. [2]
767김형중5/6/200812126RMclock 관련 문의 입니다. [1]
766정성태4/28/200812797[데브피아 Q&A 모음] 2008-04-21 ~ 2008-04-24
764정성태4/21/200813614[데브피아 Q&A 모음] 2008-04-14 ~ 2008-04-18 [2]
763단테4/17/200811337COM 객체 생성하는 방법
765정성태4/21/200812038    답변글 [답변]: CreateInstance를 부르시는 것이 추천됩니다.
762이민지4/16/200815081ClickOnce 실행 시 Internet Explorer 7.0에서 에러 메세지 출력 [1]
761이민지4/16/200811621ClickOnce로 배포를 하다가 생긴 문제에 대해 질문드립니다. [1]
760한귀순4/15/200812340DataSet 의 designer.cs [2]
759정성태4/14/200812625[데브피아 Q&A 모음] 2008-04-04 ~ 2008-04-12
7573/28/2008101642008 Server, Vista 에서 RDS 지원? [4]
756손승휘3/24/200813860Microsoft Web Browser OCX 부분이 안전하지 않는 ACTIVEX로 IE에서 인식되어는 점 [1]
754단테3/19/200811134실행파일의 아이콘을 프로그램 적으로 변경할 수 있을까요? [1]
... 61  62  63  64  65  66  67  68  69  [70]  71  72  73  74  75  ...