저는 실제 문제가 있습니다. VB.NET 2008에서 Windows 양식 응용 프로그램을 만들고 싶습니다. 원 모양의 창을 만들고 싶습니다.
어떻게해야합니까? 누구든지 나를 도울 수 있습니까?양식의 다른 유형을 만드는 방법은 무엇입니까?
1
A
답변
2
제대로 작동하려면 몇 가지 작업을 수행해야합니다. 먼저 OnLoad() 메서드가 실행될 때까지 기다리는 것이 중요합니다. 그래야만 창문이 얼마나 큰지 알 수 있습니다. 사용자가 다른 DPI에서 비디오 어댑터를 실행하면 다른 컴퓨터의 디자인 크기가되지 않습니다. 테두리와 캡션을 제거해야하며 창에 모양을 지정할 때 더 이상 잘 작동하지 않습니다. 그들이하는 일을 다시 구현하는 것은 당신에게 달려 있습니다. 최소한 사용자가 여전히 창을 이동하도록 허용하고 싶을 것입니다.
이 작업을 수행 샘플 양식 : 자신의 윈도우 크롬을 구현하는 출발점으로
Public Class Form1
Public Sub New()
InitializeComponent()
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.DoubleBuffered = True
End Sub
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
'' Set window shape
Using path As New System.Drawing.Drawing2D.GraphicsPath
path.AddEllipse(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
Me.Region = New Region(path)
End Using
MyBase.OnLoad(e)
End Sub
Private Const WM_NCHITTEST As Integer = &H84
Private Const HTCLIENT As Integer = 1
Private Const HTCAPTION As Integer = 2
Private Const CaptionHeight As Integer = 30
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
'' Detect clicks at top of window to allow it to be moved
If m.Msg = &H84 AndAlso m.Result.ToInt32() = HTCLIENT Then
Dim pos As Point = New Point(m.LParam.ToInt32())
pos = Me.PointToClient(pos)
If pos.Y < CaptionHeight Then m.Result = CType(HTCAPTION, IntPtr)
End If
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
'' Draw a simple caption
e.Graphics.FillRectangle(Brushes.Blue, 0, 0, Me.ClientSize.Width, CaptionHeight)
MyBase.OnPaint(e)
End Sub
End Class
사용이. 사용자가 창을 닫을 수있는 글리프를 추가하고 싶을 것입니다. BackgroundImage 속성은 윈도우에 '텍스처'를 부여하는 좋은 방법입니다. 또는 OnPaint()를 수정하여 자신 만의 그림을 그릴 수도 있습니다.
3
양식의 Region
속성을 설정할 수 있습니다.
원형 영역을 만들려면 GraphicsPath
을 만들고 AddEllipse
을 호출 한 다음 Region
생성자로 전달합니다.
1
는 양식에 이러한 속성을 설정
1. BackgroundImage = your_Image ' image of shape you want
2. BackColor = Outside_Area_Color ' color of outside area of image
3. FormBorderStyle = None ' to hide border and TitleBar of form
4. TransparentKey = Same_as_BackColor
2
그것의 불규칙한 형태 또는 불규칙한 모양을했다. 여기에 좋은 기사가 있습니다 : http://www.codeproject.com/Tips/149249/Simplest-way-to-implement-irregular-forms-in-NET.aspx
관련 문제
- 1. 다른 Windows 양식의 이벤트에서 Windows 양식의 기능을 호출하는 방법은 무엇입니까?
- 2. Python에서 sortable 데이터 유형을 만드는 방법은 무엇입니까?
- 3. civicrm에서 매핑 유형을 만드는 방법은 무엇입니까?
- 4. 새 DataMapper 유형을 만드는 방법은 무엇입니까?
- 5. [VB.NET] 다른 양식의 특정 문자열을 다른 양식의 목록 상자에 추가하는 방법은 무엇입니까?
- 6. Android에서 양식의 각 컨트롤에 대한 특정 키를 만드는 방법은 무엇입니까?
- 7. 양식의 colletion을 찾는 방법은 무엇입니까?
- 8. 가입 할 때 여러 사용자 유형을 만드는 방법은 무엇입니까?
- 9. wcf에서 서비스 유형을 알고있는 경우 클라이언트 프록시를 만드는 방법은 무엇입니까?
- 10. Compact Framework에서 다른 양식의 입력 패널을 숨기는 방법은 무엇입니까?
- 11. 다른 양식의 텍스트 상자에 텍스트 값을 전달하는 방법은 무엇입니까?
- 12. enum 유형을 테스트하는 방법은 무엇입니까?
- 13. 다른 서버의 테이블을 기반으로보기를 만드는 방법은 무엇입니까?
- 14. 다중 다른 테이블로 페이징을 만드는 방법은 무엇입니까?
- 15. 다른 배열에서 배열을 만드는 방법은 무엇입니까?
- 16. 다른 목록 안에 목록을 만드는 방법은 무엇입니까?
- 17. jar 파일을 만드는 다른 방법은 무엇입니까?
- 18. WebSockets - 다른 메시지를 만드는 방법은 무엇입니까?
- 19. 다른 변수 이름으로 변수를 만드는 방법은 무엇입니까?
- 20. ListView의 항목을 다른 색으로 만드는 방법은 무엇입니까?
- 21. BCB : 양식의 컨트롤을 반복하는 방법은 무엇입니까?
- 22. iPhone - topViewController와 다른 양식의 차이점
- 23. Postgres에서 사용할 색인의 유형을 결정하는 방법은 무엇입니까?
- 24. 복잡한 양식의 VBA 스크립트를 관리하는 방법은 무엇입니까?
- 25. 키와 값 모두에 대해 여러 유형을 허용하는지도 유형을 만드는 방법은 무엇입니까?
- 26. HTML 페이지에서 다른 데이터 유형을 감지하는 방법은 무엇입니까?
- 27. 유형을 다른 유형의 하위 집합으로 제한하는 방법은 무엇입니까?
- 28. 프리즘의 다른 모듈에 등록 된 유형을 해결하는 방법은 무엇입니까?
- 29. Java에서 다른 패키지에서 같은 클래스 유형을 형변환하는 방법은 무엇입니까?
- 30. 다른 데이터 유형을 가진 열에서 테이블을 함께 조인하는 방법은 무엇입니까?