VicoTas
Câu hỏi
Đức Vân ducvan1993
26/04/2013 21:42

Tạo hiệu ứng chuyển màu trong VB6?



Danh sách câu trả lời (1)
Hoài Nam (Nam Tước) namtuoc 26/04/2013 21:42
Không gian RGB dùng 3 màu cơ bản đỏ (Red), xanh lá cây (Green), xanh dương (Blue) để tạo nên các màu khác. Trong không gian này, màu sắc được tạo ra bằng cách tổng hợp ba màu trên, trong đó, mỗi thành phần màu mang một giá trị, giá trị này cho biết cường độ thành phần màu đó tham gia vào màu tổng hợp. Miền giá trị của mỗi màu cơ bản là từ 0 đến 255. Như vậy, trong không gian RGB, ta có thể tạo ra 2563 màu (hơn 16 triệu màu)
Nguyên tắc tạo hiệu ứng chuyển màu:

Giả sử bạn muốn tạo hiệu ứng chuyển màu từ màu C1 (R1, G1, B1) sang màu C2 (R2, G2, B2). Trong hệ tọa độ màu, bạn nối hai điểm màu này sẽ được một đoạn thẳng (chính là tập hợp các điểm màu). Trải đều các điểm màu này lên một chiều dài là bạn đã tạo ra hiệu ứng chuyển màu từ màu C1 (R1, G1, B1) sang màu C2 (R2, G2, B2) trên chiều dài đó. Mỗi điểm màu cấu tạo bởi 3 thành phần R, G, B nên chia đều các điểm màu cũng chính là chia đều từng thành phần R, G, B.

Cách thực hiện như thế nào? Ta chia chiều dài cần tô màu thành n khoảng, mỗi khoảng được tô bởi một màu. Khoảng thứ nhất được tô bằng màu C1 (R1, G1, B1), khoảng thứ n được tô bằng màu C2 (R2, G2, B2). Thành phần R thay đổi từ R1 đến R2 sẽ phải chia đều cho n khoảng, do vậy hai khoảng kế nhau có thành phần R chênh lệch nhau (R2-R1)/n. Tương tự, thành phần G và B ở hai khoảng kế nhau sẽ chênh lệch nhau (G2-G1)/n và (B2-B1)/n.
Lần lượt tô từng khoảng với màu sắc thay đổi theo nguyên tắc trên sẽ tạo ra hiệu ứng chuyển màu trên chiều dài cần tô màu.
Ta sẽ viết chương trình tô chuyển màu Form theo chiều ngang từ màu (R1,G1,B1) sang màu (R2,G2,B2).
Bạn tạo một Project mới thuộc loại Standard EXE. Các thuộc tính của Form1:

(Name): Form1

AutoRedraw: True

DrawWidth: 1

ScaleMode: 3 - Pixel

Ta cho một khoảng ở đây là đoạn thẳng độ lớn 1 pixel, do vậy số khoảng cũng là chiều dài của Form. Để tô màu cho một khoảng, ta dùng phương thức Line của Form (vẽ đường thằng).
Phần mã chương trình:

Option Explicit

Private Sub Gradient(R1 As Integer, G1 As Integer, B1 As Integer, R2 As Integer, G2 As Integer, B2 As Integer)

Dim R As Integer

Dim G As Integer

Dim B As Integer

Dim dR As Single

Dim dG As Single

Dim dB As Single

Dim i As Integer

dR = (R2 - R1) / Form1.ScaleWidth

dG = (G2 - G1) / Form1.ScaleWidth

dB = (B2 - B1) / Form1.ScaleWidth

For i = 0 To Form1.ScaleWidth

R = R1 + dR * i

G = G1 + dG * i

B = B1 + dB * i

Form1.Line (i, 0)-(i, Form1.ScaleHeight), RGB(R, G, B)

Next i

End Sub

Private Sub Form_Load()

Gradient 255, 0, 0, 0, 0, 0

End Sub
Trả lời câu hỏi
Tải lại mã
Câu hỏi lĩnh vực Lập trình
Lê Thị Hoa Hồng Hỏi cách thiết kế một trang web cho cơ quan

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

Vinh Xin cho tôi hỏi : làm thế nào để lấy ma trận các pixel 1 ký tự của 1 font bất kỳ bằng vb 6?

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

nophoto Các bạn cho hỏi trang tra cứu tên miền này có được không? http://www.tracuutenmien.f5all.com

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

Phương Ngôn ngữ nào để lập trình web trong tương lai?

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

Vinh Học ngôn ngữ lập trình nào để có thể viết ct Antivirus ?

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

nophoto Hỏi về ebook?

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

Manh Linh Giúp minh làm bài tập Lập trình C++ với..!!!

Đăng lúc: 21:42 - 26/04/2013 trong Lập trình

nophoto Các bạn chỉ cho mình cách tạo module giá vàng và tỉ giá ngoại tệ với? trong blog nha?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Vinh Lập trình mạng gồm những môn nào?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

nophoto Em nên theo hướng lập trình web hay lập trình phần mềm ?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Đức Cảnh File host, giúp với mấy anh chị

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Link Bạn Muốn Lập Trình Game?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

nophoto Hiện trang web cần gọi vào table bên phải?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Manh Linh Có ai biết về ASP VBscript chỉ giúp mình?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Manh Linh Cach thiet ke va lap trinh Form dang nhap trong Access 2003?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Uk Cho mình mã lệnh để phần mềm nghe nhạc Mp3 viết bằng ngôn ngữ Visua sau khi nhấp nút Next thì qua bài khác ,có cách nào không chỉ mình với

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Xuân Trọng Giúp làm báo cáo với CRYSTAL REPORT 8.5 ?

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

Lê Thị Hoa Hồng Bạn nào chỉ mình dyệt danh sách nhạc mp3 để phần mềm nghe nhạc Mp3 của mình hát từ bài đầu tới bài cuối được không Xin cảm ơn nhiều

Đăng lúc: 21:41 - 26/04/2013 trong Lập trình

dang duc thang Hỏi về phần mềm nghe nhạc mp3 viết bằng ngôn ngữ Vb.Net?

Đăng lúc: 21:40 - 26/04/2013 trong Lập trình

Củ Chuối Có thể thiết lập chế độ tự động cho chuột không?

Đăng lúc: 21:40 - 26/04/2013 trong Lập trình

Rao vặt Siêu Vip