Computer - Communication - Control. 3C INC
 
Nhiều người quan tâm
Skip List - đối thủ của cây cân bằng
Trong Java, làm thế nào để lấy processor ID (CPU)?
Visual Foxpro 9.0
Hướng dẫn sử dụng công cụ eclipse lập trình java (Phần 1: download và cài đặt)
Hướng dẫn sử dụng công cụ eclipse lập trình java (Phần 2: Hướng dẫn kéo thả Giao diện)
Java cơ bản đến nâng cao (phần I)

Lập trình


In bài này Gửi bài viết này cho bạn bè
(Thứ Hai, 20/04/2009-9:54 AM)
Tạo hiệu ứng chuyển màu trong VB6
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.
 


Không gian RGB:

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).

Không gian RGB được minh họa bằng hệ trục tọa độ 3 chiều với các trục là R, G, B.


 

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.

Hiệu ứng chuyển màu trên Form:

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

Bạn có thể áp dụng tương tự để tô chuyển màu một PictureBox, hoặc tô chuyển màu theo chiều dọc.

Viết chữ chuyển màu:

Chương trình sẽ viết ra trên Form dòng chữ chuyển từ màu (R1, G1, B1) sang màu (R2, G2, B2) (bạn có thể áp dụng tương tự để viết chữ chuyển màu trên một PicturexBox).


Ta cho một khoảng là từng ký tự của dòng chữ, do vậy số khoảng cũng là số ký tự của dòng chữ. Từng khoảng (từng ký tự) sẽ được viết với các màu khác nhau.

Bạn tạo một Project mới thuộc loại Standard EXE. Thuộc tính AutoRedraw của Form1 là True.

Phần mã chương trình:

Option Explicit

Private Sub ShadeText(x As Integer, y As Integer, R1 As Integer, G1 As Integer, B1 As Integer, R2 As Integer, G2 As Integer, B2 As Integer, s As String)

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) / Len(s)

    dG = (G2 - G1) / Len(s)

    dB = (B2 - B1) / Len(s)

    Form1.CurrentX = x

    Form1.CurrentY = y

    For i = 1 To Len(s)

        R = R1 + dR * i

        G = G1 + dG * i

        B = B1 + dB * i

        Form1.ForeColor = RGB(R, G, B)

        Form1.Print Mid$(s, i, 1);

    Next i

End Sub

Private Sub Form_Load()

  ShadeText 120, 180, 255, 0, 0, 0, 0, 255, "This text fades from red to blue."

End Sub


Kết quả rất ấn tượng, nhưng cách làm lại rất đơn giản! Chúc bạn thành công!


Để biết mọi thứ về Web hãy xem"
  www.thegioiweb.vn

Download Portable IDM
PM download file trên mạng cực nhanh, nhỏ gọn, miễn phí

   Download Winrar 3.80
PM nén và giải nén file xuất sắc. Chương trình nhỏ gọn, dễ sử dụng.

    [ Các bài mới ]
    [ Các bài đã đăng ]

    Download BKAV Home
    phiên bản mới nhất

    Bài mới cập nhật
    Virus “tự lai tạo” đang thách thức các phần mềm bảo mật
    Laptop 3D Asus được bán tại VN giá 51,6 triệu đồng
    Phân tích hành động của Malware với Joebox Online Sandbox
    Lấy thông tin thư mục nhanh chóng với GetFoldersize
    Nokia N900 bán tại VN giá 12,9 triệu đồng
    Máy tính xách tay có thời lượng pin 18 giờ
    Laptop Samsung lần đầu tiên ra mắt tại Việt Nam
    Laptop đa phương tiện MSI CR620
    Windows Phone 7 không hỗ trợ copy/paste
    Microsoft giới thiệu thử nghiệm sơ bộ Internet Explorer 9
    Điện thoại quay phim HD xuất hiện tại TP HCM
     
     
     
    COMPUTER - COMMUNICATION - CONTROL 3C, INC.
    Số 6 - Láng Hạ - Ba Ðình - Hà Nội; Tel: 84.4.38312695; Fax: 84.4.38311925
    Copyright © 2005 3C INC. All rights reserved.