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...
Post Reply
User avatar
lanlan
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 310
Joined: Thu 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

Post by lanlan »

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 ;)
Attachments
giaodienform.rar
source
(1.67 KiB) Downloaded 1127 times
demo.jpg
"•´¨*•.¸¸.*..^_^ one love-one heart ^_^..*.¸¸.•*¨."
_______"•´`•.(¸.•´(¸.•* *•.¸)`•.¸).•´`•"
________________*(¨`•.•´¨)*
__________________`•.¸.•’
User avatar
truongphu
VIP
VIP
Posts: 4779
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 525 times

Re: Tạo Giao Diên Cho Form

Post by truongphu »

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:

Code: Select all

Private Sub Form_Paint() Me.DrawWidth = 8:      Me.ScaleWidth = 100    For intLoop = 0 To Me.ScaleWidth        Me.Line (intLoop, 0)-(intLoop - 1, Screen.Height), RGB(30, intLoop * 1.2, intLoop / 2)    NextEnd 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
User avatar
T7
Thành viên danh dự
Thành viên danh dự
Posts: 415
Joined: Thu 24/05/2007 8:19 pm
Location: Long Xuyên - An Giang
Been thanked: 12 times
Contact:

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

Post by T7 »

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
viewtopic.php?f=52&t=3396&p=21177&hilit ... 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 wrote:

Code: Select all

Private Type TRIVERTEX    x As Long    y As Long    Red As Integer 'Ushort value    Green As Integer 'Ushort value    Blue As Integer 'ushort value    Alpha As Integer 'ushortEnd TypePrivate Type GRADIENT_RECT    UpperLeft As Long  'In reality this is a UNSIGNED Long    LowerRight As Long 'In reality this is a UNSIGNED LongEnd Type Const GRADIENT_FILL_RECT_H As Long = &H0 'In this mode, two endpoints describe a rectangle. The rectangle is'defined to have a constant color (specified by the TRIVERTEX structure) for the left and right edges. GDI interpolates'the color from the top to bottom edge and fills the interior.Const GRADIENT_FILL_RECT_V  As Long = &H1 'In this mode, two endpoints describe a rectangle. The rectangle' is defined to have a constant color (specified by the TRIVERTEX structure) for the top and bottom edges. GDI interpolates' the color from the top to bottom edge and fills the interior.Const GRADIENT_FILL_TRIANGLE As Long = &H2 'In this mode, an array of TRIVERTEX structures is passed to GDI'along with a list of array indexes that describe separate triangles. GDI performs linear interpolation between triangle vertices'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.Const GRADIENT_FILL_OP_FLAG As Long = &HFF 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 LongPrivate Function LongToUShort(Unsigned As Long) As Integer    'A small function to convert from long to unsigned short    LongToUShort = CInt(Unsigned - &H10000)End FunctionPrivate Sub Form_Load()    'KPD-Team 1999    'URL: http://www.allapi.net/    'E-Mail: KPDTeam@Allapi.net    'API uses pixels    Me.ScaleMode = vbPixelsEnd SubPrivate Sub Form_Paint()    Dim vert(1) As TRIVERTEX    Dim gRect As GRADIENT_RECT     'from black    With vert(0)        .x = 0        .y = 0        .Red = 0&        .Green = 0& '&HFF&   '0&        .Blue = 0&        .Alpha = 0&    End With     'to blue    With vert(1)        .x = Me.ScaleWidth        .y = Me.ScaleHeight        .Red = 0&        .Green = 0&        .Blue = LongToUShort(&HFF00&)        .Alpha = 0&    End With     gRect.UpperLeft = 0    gRect.LowerRight = 1     GradientFillRect Me.hdc, vert(0), 2, gRect, 1, GRADIENT_FILL_RECT_HEnd Sub
While (i <= you) i++;
Post Reply

Return to “[VB] Âm thanh và Đồ họa”