클리엘
CLIEL LAB
클리엘
전체 방문자
오늘
어제
  • 분류 전체보기 (515) N
    • Mobile (47)
      • Kotlin (47)
    • Web (84)
      • NestJS (9)
      • HTML5 & CSS3 (38)
      • Javascript (20)
      • TypeScript (6)
      • JQuery (11)
    • .NET (302) N
      • C# (85) N
      • ASP.NET (67)
      • Windows API for .NET (128)
    • Server (53)
      • SQL Server (10)
      • MariaDB (18)
      • Windows Server (6)
      • node.js (19)
    • System (12)
      • 작업LOG (12)
    • Review (11)
    • ETC (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 블로그 정리

인기 글

태그

  • .NET
  • c#
  • CSS3
  • jQuery
  • NestJS
  • Windows API
  • asp.net core web api
  • Kotlin
  • 변수
  • JavaScript
  • MariaDB
  • Entity Framework
  • android studio
  • LINQ
  • asp.net core
  • android
  • node.js
  • HTML5
  • ASP.NET
  • exception

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
클리엘

CLIEL LAB

.NET/Windows API for .NET

DrawEdge - 테두리 그리기

2019. 8. 5. 17:45
728x90

DrawEdge은 Window에 4각형 모양의 테두리를 그리는 함수 입니다.

Declare Function DrawEdge Lib "user32" Alias "DrawEdge" (ByVal hdc As Integer, ByRef qrc As RECT, ByVal edge As Integer, ByVal grfFlags As Integer) As Integer

- VB.NET 선언

[DllImport("user32")]
public static extern int DrawEdge(int hdc, ref RECT qrc, int edge, int grfFlags);

- C# 선언

 

DrawEdge의 첫번째 인수는 테두리를 그릴 Window창이나 화면의 Device Context를 기술합니다.

 

[Windows API for .NET] - GetDC - Window및 Control의 Device Context 구하기

[Windows API for .NET] - GetWindowDC - 현재 Windows화면의 Device Context 구하기

 

두번째 인수로는 테두리를 그릴 위치와 크기를 지정하는 RECT구조체를 전달해야 합니다. 이 구조체선언은 만일 테두리를 왼쪽 10부터 가로 100까지 위쪽 10부터 세로 100까지 그려낼려면 다음과 같이 선언될 수 있습니다.

Public Structure RECT
    Public left As Integer
    Public top As Integer
    Public right As Integer
    Public bottom As Integer
End Structure

Dim norRECT As RECT
norRECT.left = 10
norRECT.top = 10
norRECT.right = 100
norRECT.bottom = 100

- VB.NET

public struct RECT{
   public int left;
   public int top;
   public int right;
   public int bottom;
}

RECT norRECT = default(RECT);
norRECT.left = 10;
norRECT.top = 10;
norRECT.right = 100;
norRECT.bottom = 100;

- C#

 

DrawEdge의 세번째 함수는 테두리의 형태를 지정하는 부분으로 다음과 같은 상수를 사용할 수 있습니다.

 상수  값(VB/C#)  설명
 BDR_RAISEDINNER  4  안쪽 테두리 표현
 BDR_SUNKENINNER  8  안쪽 테두리 표현

VB.NET은 &H로 C#은 0x로 16진수를 표시합니다.

마지막 인수는 테두리를 그리는 형태를 지정하는 것으로 다음 상수를 사용할 수 있습니다.

 상수  값  설명
 BF_ADJUST  2000  빈공간
 BF_BOTTOM  8  하단 테두리
 BF_BOTTOMLEFT  8, 1  하단, 왼쪽 테두리
 BF_BOTTOMRIGHT  8, 4  하단, 오른쪽 테두리
 BF_DIAGONAL  10  대각선형
 BF_DIAGONAL_ENDBOTTOMLEFT  10, 8, 1  대각선형(상단오른쪽부터 하단왼쪽)
 BF_DIAGONAL_ENDBOTTOMRIGHT  10, 8, 4  대각선형(상단왼쪽부터 하단오른쪽)
 BF_DIAGONAL_ENDTOPLEFT  10, 2, 1  대각선형(하단오른쪽부터 상단왼쪽)
 BF_DIAGONAL_ENDTOPRIGHT  10, 2, 4  대각선형(하단왼쪽부터 상단오른쪽)
 BF_FLAT  4000  평면
 BF_LEFT  1  왼쪽 테두리
 BF_MIDDLE  800  내부를 채움
 BF_MONO  8000  1차원
 BF_RECT  1, 2, 4, 8  사각형 테두리
 BF_RIGHT  4  오른쪽 테두리
 BF_SOFT  1000  BOTTON형
 BF_TOP  2  상단 테두리
 BF_TOPLEFT  2, 1  왼쪽, 상단 테두리
 BF_TOPRIGHT  2, 4  오른쪽, 상단 테두리

Comma는 or단위 처리입니다.

상위 인수를 토대로 Form위에 테두리를 그리면 DrawEdge함수는 다음과 같이 호출될 수 있습니다.

DrawEdge(GetDC(Me.Handle), norRECT, &H1, &H1 Or &H2 Or &H4 Or &H8)

- VB.NET 호출

DrawEdge(GetDC((int)this.Handle), ref norRECT, 0x1, 0x1 | 0x2 | 0x4 | 0x8);

- C# 호출

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'.NET > Windows API for .NET' 카테고리의 다른 글

MoveWindow - 지정한 Window의 위치및 크기 변환  (0) 2019.08.06
SetForegroundWindow - 작업 Window설정  (0) 2019.08.05
LineTo - Line 그리기  (0) 2019.08.05
IsIconic - Window의 최소화 여부 판단  (0) 2019.08.05
GetWindow - 지정한 Window와의 관계 Window찾기  (0) 2019.08.05
    '.NET/Windows API for .NET' 카테고리의 다른 글
    • MoveWindow - 지정한 Window의 위치및 크기 변환
    • SetForegroundWindow - 작업 Window설정
    • LineTo - Line 그리기
    • IsIconic - Window의 최소화 여부 판단
    클리엘
    클리엘
    누구냐 넌?

    티스토리툴바