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

Tài liệu Đoạn code VB mẫu dùng cho việc load ảnh và hiển thị vào PictureBox1 pdf

4 458 0
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 đề Đoạn Code VB Mẫu Dùng Cho Việc Load Ảnh Và Hiển Thị Vào PictureBox1
Trường học Unknown
Chuyên ngành Computer Science
Thể loại Tài liệu
Năm xuất bản 2023
Thành phố Unknown
Định dạng
Số trang 4
Dung lượng 111,16 KB

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

Nội dung

Đoạn code VB mẫu dùng cho việc load ảnh và hiển thị vào PictureBox1 Xin hỏi về định dạng ảnh JPG, BMP..., cách thức truy xuất file ảnh và giải thuật cắt ảnh thành nhiều phần Tôi muốn viế

Trang 1

Đoạn code VB mẫu dùng cho việc load ảnh và hiển thị vào PictureBox1

Xin hỏi về định dạng ảnh JPG, BMP , cách thức truy xuất file ảnh và giải thuật cắt ảnh thành nhiều phần

Tôi muốn viết 1 chương trình có chức năng như sau (bằng Delphi hay VB):

• Chương trình sẽ thực hiện load 1 ảnh lên picturebox trên Form

• Sau đó tiến hành chia ảnh thành nhiều phần và hiển thị riêng biệt (như trong các trò chơi ghép tranh)

• Người chơi có thể di chuyển các phần ảnh đến vị trí mong muốn trên Form Đáp:

Thông tin về định dạng file ảnh *.jpg, *.bmp có thể tìm thấy trên Internet, tuy nhiên việc tìm hiểu và nắm vững định dạng file ảnh (nhất là định dạng phức tạp như jpg, gif ) sẽ rất khó khăn

và tốn nhiều thời gian Do đó bạn nên cố gắng dùng lại các thư viện và linh kiện phần mềm hỗ trợ việc xử lý file ảnh trong khi viết ứng dụng của mình Cụ thể để viết 1 chương trình có các chức năng mà bạn yêu cầu, bạn chỉ cần dùng các hàm API của Windows (hay các hàm của VB)

là đủ Cụ thể, nếu bạn dùng VB và dùng các hàm API của Windows để viết ứng dụng thì:

• Việc load ảnh và hiển thị vào PictureBox1 có thể thực hiện bởi đoạn code VB mẫu như sau:

‘Khai báo hằng cần dùng

Private Const LR_LOADFROMFILE = 16 ‘ used with LoadImage

Private Const SRCCOPY = &HCC0020 ‘ used to determine how a blit

Private Const IMAGE_BITMAP = &O0 ‘ used with LoadImage to load a

Private Const LR_CREATEDIBSECTION = 8192 ‘ used with LoadImage

‘khai báo kiểu BITMAP

Private Type BITMAP

bmType As Long

bmWidth As Long

bmHeight As Long

bmWidthBytes As Long

bmPlanes As Integer

Trang 2

bmBitsPixel As Integer

bmBits As Long

End Type

‘khai báo các hàm API cần dùng

Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

Private Declare Function LoadImage Lib "user32" Alias "LoadImageA" (ByVal hInst As Long, ByVal lpsz As String, ByVal un1 As Long, ByVal n1 As Long, ByVal n2 As Long, ByVal un2

As Long) As Long

Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long

Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long,ByVal x As Long, ByVal

y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Sub btnLoad_Click()

Dim hBitmap As Long ‘ handle của bitmap cần nạp vào

Dim lResult As Long ‘ biến chứa kết quả gọi hàm API

Dim sFileName As String ‘ tên file chứa ảnh

Dim BitmapData As BITMAP ‘ biến chứa thông tin về ảnh

Dim iImageDC As Long ‘ DC chứa ảnh bitmap

‘ thiết lập đường dẫn của file ảnh

Trang 3

sFileName = "c:\windows\winnt256.bmp"

‘ nạp ảnh từ file vào bộ nhớ

hBitmap = LoadImage(0, sFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE)

If (hBitmap = 0) Then

MsgBox "Error : Unable To Load Bitmap Image : " & sFileName, _

vbOKOnly, "Bitmap Load Error"

Exit Sub

End If

‘tạo đối tượng chứa thông tin ảnh

lResult = GetObject(hBitmap, Len(BitmapData), BitmapData)

If (lResult = 0) Then Exit Sub

‘tạo 1 device context (DC) tạm chứa ảnh

iImageDC = CreateCompatibleDC(0)

If (iImageDC = 0) Then Exit Sub

‘cất ảnh vào device context

lResult = SelectObject(iImageDC, hBitmap)

If (lResult = 0) Then Exit Sub

‘thiết lập đơn vị đo theo pixel

Picture1.ScaleMode = vbPixels

‘vẽ ảnh từ DC sang PictureBox1, có scale từ kích thước thực về kích thước của PictureBox lResult = StretchBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, iImageDC, 0,

0, BitmapData.bmWidth, BitmapData.bmHeight, SRCCOPY)

End Sub

Trang 4

• Việc copy 1 vùng ảnh từ DC này sang DC khác có thể thực hiện bởi đoạn code VB mẫu như sau:

Private Sub btnCopy_Click()

Dim x As Integer

Dim y As Integer

Dim lResult As Long

‘khởi động qui trình tính số ngẫu nhiên

‘tìm vị trí ngẫu nhiên của vùng ảnh trong PictureBox1 cần copy

x = Int((Picture1.ScaleWidth - 100) * Rnd)

y = Int((Picture1.ScaleHeight - 100) * Rnd)

‘copy vùng ảnh hình vuông (100,100) ở toạ độ x,y của PictureBox1 sang góc trên trái của PictureBox2

lResult = BitBlt(Picture2.hdc, 0, 0, 100, 100, Picture1.hdc, x, y, SRCCOPY)

End Sub

 

Ngày đăng: 13/12/2013, 01:16

TỪ KHÓA LIÊN QUAN

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

w