• 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

Zoom ảnh ko bị vỡ hạt

Các thủ thuật về âm thanh, đồ họa, truyền thông đa phương tiện...
dactung93
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 496
Ngày tham gia: T.Ba 04/11/2008 8:43 am
Has thanked: 6 time
Been thanked: 8 time

Zoom ảnh ko bị vỡ hạt

Gửi bàigửi bởi dactung93 » T.Tư 24/02/2010 3:47 pm

Thủ thuật: Zoom ảnh to mà ko bị vỡ hạt
Mô tả: Hàm API thao tác với ảnh

Bạn đã bao giờ zoom một bức ảnh nào to ra chưa ?, thường thì những bức ảnh thuộc cỡ nhỏ như 100x100 khi zoom lên cỡ tầm 200x200 hoặc to hơn hoặc bé đi thì thường bị vỡ ảnh. Mình có cách sau giúp bạn tránh tình trạng bị vỡ ảnh. Có thể dùng trong chương trình để zoom ảnh hoặc làm bé ảnh đi ( ko vỡ hạt )

Khai báo API
  1. 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
  2. Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, ByVal hStretchMode As Long) As Long
  3.  
  4. Const STRETCHMODE = vbPaletteModeNone  
  5.  


Các thao tác với ảnh.
Với A là picturebox ảnh ban đầu
B là picture ảnh kết quả
  1. a.Picture = LoadPicture(App.Path & "\abc.jpg")
  2.     Call SetStretchBltMode(b.hdc, STRETCHMODE)
  3.     Call StretchBlt(b.hdc, x, y, nw, nh, a.hdc, xs, ys, nsw, nsh, vbSrcCopy)
  4.     b.Refresh
  5. ' x,y - Tọa độ của ảnh kết quả sẽ suất hiện trong picturebox B - x là top, y là left ( Recommend là 0, 0
  6. ' nw,nh - Độ phân giải của ảnh - tính bằng pixel
  7. ' xs,ys - Tọa độ bắt đầu lấy ảnh của picturebox B ( Recommend là 0, 0)
  8. ' nsw,nsh - độ phân giải của ảnh ban đầu. ( Recommend lấy khít với picturebox ) - Tính = pixel
  9.  


Cái này hay lắm, thử đi



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