• 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

Tạo giao diện gradient từ màu này đến màu kia cho Form

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
lanlan
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 310
Ngày tham gia: T.Năm 05/06/2008 8:49 am
Been thanked: 1 time

Tạo giao diện gradient từ màu này đến màu kia cho Form

Gửi bàigửi bởi lanlan » T.Ba 16/12/2008 4:15 pm

Thủ thuật: Tạo giao diện gradient từ màu này đến màu kia cho Form
Tác giả: Sưu tầm
Mô tả: Có rất nhìu cách để tạo ra một form theo ý thích của minh có thể dùng hình ảnh nhưng hơi nặng nay em đưa ra một cách mọi người có thể cùng tham gia để phát triển
bắt đầu từ việc tạo màu nền cho form
lưu ý chỉ dùng bằng code ;)

Tập tin đính kèm
giaodienform.rar
source
(1.67 KiB) Đã tải 1028 lần
demo.jpg


"•´¨*•.¸¸.*..^_^ one love-one heart ^_^..*.¸¸.•*¨."
_______"•´`•.(¸.•´(¸.•* *•.¸)`•.¸).•´`•"
________________*(¨`•.•´¨)*
__________________`•.¸.•’

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Tạo Giao Diên Cho Form

Gửi bàigửi bởi truongphu » T.Ba 16/12/2008 9:03 pm

1- tôi ủng hộ lanlan ngày càng tham gia nhiệt tình
2- Code tương tự như lanlan gởi thì có nhiều, nhưng dù sao tôi cũng ghi nhận code lanlan là khá ngắn
3- trên code lanlan tôi viết lại như sau:

Mã: Chọn hết

  1. Private Sub Form_Paint()
  2.  Me.DrawWidth = 8:      Me.ScaleWidth = 100
  3.     For intLoop = 0 To Me.ScaleWidth
  4.         Me.Line (intLoop, 0)-(intLoop - 1, Screen.Height), RGB(30, intLoop * 1.2, intLoop / 2)
  5.     Next
  6. End Sub

Trong hàm RGB(x,y,z), mỗi trị x,y,z không quá 255. Bạn có thể chỉnh tùy thích để đạt được màu mong muốn

Ghi chú: Sửa 10/2/09: Sự kiện Form_Paint() chứ không phải Form_Load()
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

Hình đại diện của người dùng
T7
Thành viên danh dự
Thành viên danh dự
Bài viết: 415
Ngày tham gia: T.Năm 24/05/2007 8:19 pm
Đến từ: Long Xuyên - An Giang
Been thanked: 12 time
Liên hệ:

Re: Tạo giao diện gradient từ màu này đến màu kia cho Form

Gửi bàigửi bởi T7 » T.Hai 13/07/2009 3:46 pm

Cách tô màu gradient này nếu biết kết hợp thêm với 1 cái timer và một số phép tính để thay đổi màu thì ta sẽ có những hiệu ứng rất đẹp :D
http://caulacbovb.com/forum/viewtopic.php?f=52&t=3396&p=21177&hilit=Form+chuy%E1%BB%83n+m%C3%A0u#p21177

@chị lanlan: Thay vì tô từng đường line như vậy thì ta có thể dùng hàm api GradientFillRect :D , xử lí nhanh hơn 1 tí ;)
API - Guide đã viết:

Mã: Chọn hết

  1. Private Type TRIVERTEX
  2.     x As Long
  3.     y As Long
  4.     Red As Integer 'Ushort value
  5.     Green As Integer 'Ushort value
  6.     Blue As Integer 'ushort value
  7.     Alpha As Integer 'ushort
  8. End Type
  9. Private Type GRADIENT_RECT
  10.     UpperLeft As Long  'In reality this is a UNSIGNED Long
  11.     LowerRight As Long 'In reality this is a UNSIGNED Long
  12. End Type
  13.  
  14. Const GRADIENT_FILL_RECT_H As Long = &H0 'In this mode, two endpoints describe a rectangle. The rectangle is
  15. 'defined to have a constant color (specified by the TRIVERTEX structure) for the left and right edges. GDI interpolates
  16. 'the color from the top to bottom edge and fills the interior.
  17. Const GRADIENT_FILL_RECT_V  As Long = &H1 'In this mode, two endpoints describe a rectangle. The rectangle
  18. ' is defined to have a constant color (specified by the TRIVERTEX structure) for the top and bottom edges. GDI interpolates
  19. ' the color from the top to bottom edge and fills the interior.
  20. Const GRADIENT_FILL_TRIANGLE As Long = &H2 'In this mode, an array of TRIVERTEX structures is passed to GDI
  21. 'along with a list of array indexes that describe separate triangles. GDI performs linear interpolation between triangle vertices
  22. 'and fills the interior. Drawing is done directly in 24- and 32-bpp modes. Dithering is performed in 16-, 8.4-, and 1-bpp mode.
  23. Const GRADIENT_FILL_OP_FLAG As Long = &HFF
  24.  
  25. Private Declare Function GradientFillRect Lib "msimg32" Alias "GradientFill" (ByVal hdc As Long, pVertex As TRIVERTEX, ByVal dwNumVertex As Long, pMesh As GRADIENT_RECT, ByVal dwNumMesh As Long, ByVal dwMode As Long) As Long
  26. Private Function LongToUShort(Unsigned As Long) As Integer
  27.     'A small function to convert from long to unsigned short
  28.     LongToUShort = CInt(Unsigned - &H10000)
  29. End Function
  30. Private Sub Form_Load()
  31.     'KPD-Team 1999
  32.     'URL: http://www.allapi.net/
  33.     'E-Mail: KPDTeam@Allapi.net
  34.     'API uses pixels
  35.     Me.ScaleMode = vbPixels
  36. End Sub
  37. Private Sub Form_Paint()
  38.     Dim vert(1) As TRIVERTEX
  39.     Dim gRect As GRADIENT_RECT
  40.  
  41.     'from black
  42.     With vert(0)
  43.         .x = 0
  44.         .y = 0
  45.         .Red = 0&
  46.         .Green = 0& '&HFF&   '0&
  47.         .Blue = 0&
  48.         .Alpha = 0&
  49.     End With
  50.  
  51.     'to blue
  52.     With vert(1)
  53.         .x = Me.ScaleWidth
  54.         .y = Me.ScaleHeight
  55.         .Red = 0&
  56.         .Green = 0&
  57.         .Blue = LongToUShort(&HFF00&)
  58.         .Alpha = 0&
  59.     End With
  60.  
  61.     gRect.UpperLeft = 0
  62.     gRect.LowerRight = 1
  63.  
  64.     GradientFillRect Me.hdc, vert(0), 2, gRect, 1, GRADIENT_FILL_RECT_H
  65. End Sub

While (i <= you) 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