1. Trang chủ
  2. » Công Nghệ Thông Tin

Các chiêu thức trong lập trình Form có hình dạng theo một hình ảnh bất kỳ

2 537 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Form có hình dạng theo một hình ảnh bất kỳ
Trường học Pscode
Thể loại bài viết
Định dạng
Số trang 2
Dung lượng 12,9 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Form có hình dạng theo một hình ảnh bất kỳ Tất nhiên có màu tượng trưng cho form trong suốt home Chú ý : Phần này trong lần xuất bản 1 có lỗi Xuất xứ : www.pscode.com Binh khí sử dụng :

Trang 1

Form có hình dạng theo một hình ảnh bất kỳ (Tất nhiên có màu tượng trưng cho form trong suốt) home

Chú ý : Phần này trong lần xuất bản 1 có lỗi

Xuất xứ : www.pscode.com

Binh khí sử dụng :

- 1 picture mang tên : picMainSkin trong đó có chứa sẵn một hình ảnh bất kỳ mà bạn muốn làm giao diện chương trình màu tượng trưng cho trong suốt là màu ở câu lệnh TransparentColor = GetPixel(hDC, 0, 0) có nghĩa là sẽ chính là màu của điểm có tọa độ (0,0) trên Picture này đây chính là một trong những điểm thú vị của đọan Code này

- 1 Module

Đoạn mã :

‘Trong Module :

Option Explicit

Public Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long

Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long)

As Long

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Declare Function ReleaseCapture Lib "user32" () As Long

Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Public Const RGN_OR = 2

Public Const WM_NCLBUTTONDOWN = &HA1

Public Const HTCAPTION = 2

Public Function MakeRegion(picSkin As PictureBox) As Long

Dim x As Long, y As Long, StartLineX As Long

Dim FullRegion As Long, LineRegion As Long

Dim TransparentColor As Long

Dim InFirstRegion As Boolean

Dim InLine As Boolean

Dim hDC As Long

Dim PicWidth As Long

Dim PicHeight As Long

hDC = picSkin.hDC

PicWidth = picSkin.ScaleWidth

PicHeight = picSkin.ScaleHeight

InFirstRegion = True: InLine = False

x = y = StartLineX = 0

TransparentColor = GetPixel(hDC, 0, 0)

For y = 0 To PicHeight - 1

For x = 0 To PicWidth - 1

If GetPixel(hDC, x, y) = TransparentColor Or x = PicWidth Then

If InLine Then

InLine = False

LineRegion = CreateRectRgn(StartLineX, y, x, y + 1)

Trang 2

If InFirstRegion Then

FullRegion = LineRegion

InFirstRegion = False

Else

CombineRgn FullRegion, FullRegion, LineRegion, RGN_OR

DeleteObject LineRegion

End If

End If

Else

If Not InLine Then

InLine = True

StartLineX = x

End If

End If

Next

Next

MakeRegion = FullRegion

End Function

‘Trong Form:

Option Explicit

Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx

As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Const SWP_NOMOVE = 2

Const SWP_NOSIZE = 1

Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Private Sub Form_Load()

Dim WindowRegion As Long

picMainSkin.ScaleMode = vbPixels

picMainSkin.AutoRedraw = True

picMainSkin.AutoSize = True

picMainSkin.BorderStyle = vbBSNone

Me.BorderStyle = vbBSNone

Set picMainSkin.Picture = picMainSkin.Picture

Me.Width = picMainSkin.Width

Me.Height = picMainSkin.Height

WindowRegion = MakeRegion(picMainSkin)

SetWindowRgn Me.hwnd, WindowRegion, True

End Sub

Private Sub picMainSkin_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)

ReleaseCapture

SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&

End Sub

Ngày đăng: 24/10/2013, 14:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w