• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Lát ảnh cho Form [tiled picture background]

Các thủ thuật về âm thanh, đồ họa, truyền thông đa phương tiện...
Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

Lát ảnh cho Form [tiled picture background]

Gửi bàigửi bởi clarkkent » T.Bảy 28/03/2009 2:18 pm

Thủ thuật: Lát ảnh cho Form
Tác giả: sưu tầm
Mô tả: Lát ảnh cho Form[


Thêm vào 1 PictureBox, dán code vào và chạy thôi.

Mã: Chọn hết

  1. Option Explicit
  2. Private Type BITMAP
  3.     bmType As Long
  4.     bmWidth As Long
  5.     bmHeight As Long
  6.     bmWidthBytes As Long
  7.     bmPlanes As Integer
  8.     bmBitsPixel As Integer
  9.     bmBits As Long
  10. End Type
  11.  
  12. 'Each line below (started by "Private" word) have to be pasted as a single line
  13. Private Declare Function BitBlt Lib "gdi32.dll" (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
  14.  
  15. Private Declare Function CreateCompatibleDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
  16.  
  17. Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
  18.  
  19. Private Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As Long, ByVal hObject As Long) As Long
  20.  
  21. Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
  22.  
  23. Private Declare Function GetObject Lib "gdi32.dll" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
  24.  
  25. Private Sub Form_Load()
  26.     'Hide Picture1 and define its properties
  27.     Picture1.Visible = False
  28.     Picture1.AutoRedraw = False
  29.     Picture1.AutoSize = True
  30.     'Define form properties to be equivalent
  31.     Form1.AutoRedraw = False
  32. End Sub
  33.  
  34. Private Sub Form_Paint()
  35.     'Define necessary variables
  36.     Dim Success As Long 'Result of API calls
  37.     Dim bmp As BITMAP 'BMP copied from Picture1
  38.     Dim srcDC As Long 'Source hDC
  39.     Dim hSrcPrevBmp As Long 'Destination hDC
  40.     Dim srcBmp As Long
  41.     Dim hSrcBmp As Long
  42.     Dim y As Long
  43.     Dim x As Long
  44.  
  45.     'Loads picture - it can be any supported format of picture box control
  46.     Picture1.Picture = LoadPicture("C:\WINDOWS\Gone Fishing.bmp") 'doi hinh khác o day
  47.     srcBmp = Picture1.Picture
  48.     Success = GetObject(srcBmp, Len(bmp), bmp)
  49.     srcDC = CreateCompatibleDC(Form1.hdc)
  50.     hSrcBmp = SelectObject(srcDC, srcBmp)
  51.  
  52.     'Copy source Bitmap over form many times are necessary to cover its area
  53.     For y = 0 To Form1.ScaleHeight Step bmp.bmHeight
  54.         For x = 0 To Form1.ScaleWidth Step bmp.bmWidth
  55.             'The follow line have to be in a single line
  56.             Success = BitBlt(Form1.hdc, x, y, bmp.bmWidth, bmp.bmHeight, srcDC, 0, 0, &HCC0020)
  57.         Next x
  58.     Next y
  59.  
  60.     'Delete used objetcs and DC
  61.     Success = DeleteObject(hSrcBmp)
  62.     Success = DeleteDC(srcDC)
  63. End Sub
  64.  
  65.  


• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1318
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 time
Been thanked: 69 time
Liên hệ:

Re: Lát ảnh cho Form [tiled picture background]

Gửi bàigửi bởi vietteiv » CN 29/03/2009 10:35 am

test thử thấy ok. nhưng các control lại che mất hình của form. làm cách nào để tất cả các control trên form ko che hình luôn, dạng transparent
lát ảnh cho form theo code trên thì thấy có dạng lặp lại hình trong picture. làm thế nào chỉ thể hiện 1 hình trong picture ấy nhưng phủ đầy chiều cao và chiều rộng của form luôn.

Hình đại diện của người dùng
DQHung
Guru
Guru
Bài viết: 576
Ngày tham gia: T.Hai 12/02/2007 3:24 pm
Đến từ: Rach Gia - Kien Giang
Been thanked: 40 time
Liên hệ:

Re: Lát ảnh cho Form [tiled picture background]

Gửi bàigửi bởi DQHung » T.Hai 13/04/2009 7:18 pm

vietteiv đã viết:lát ảnh cho form theo code trên thì thấy có dạng lặp lại hình trong picture. làm thế nào chỉ thể hiện 1 hình trong picture ấy nhưng phủ đầy chiều cao và chiều rộng của form luôn.


Phủ đầy hình lên form còn đơn giản hơn là tile form nửa.Dùng hàm StretchBlt là OK, hình ít bị bể hạt.

Mã: Chọn hết

  1. Public Declare Function StretchBlt Lib "gdi32" Alias "StretchBlt" (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


Quay về “[VB] Âm thanh và Đồ họa”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách