• 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

Cách đổi từ màu pha sang màu đơn

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

Điều hành viên: tungblt

Hình đại diện của người dùng
little_boi
Thành viên chính thức
Thành viên chính thức
Bài viết: 23
Ngày tham gia: T.Hai 04/05/2009 11:24 am
Đến từ: Vũng Tàu
Been thanked: 2 time
Liên hệ:

Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi little_boi » T.Bảy 09/05/2009 11:46 am

Giả sử em có một giá trị màu pha vd như 65535 vv...Làm sao để lấy giá trị màu đơn red, green, blue của nó?
Xin hướng dẫn giúp em Cảm ơn.


MSGBOX "ILUSM", vbExclamation

Hình đại diện của người dùng
thuongall
Quản trị
Quản trị
Bài viết: 455
Ngày tham gia: T.Tư 26/01/2005 8:05 am
Đến từ: Quê hương Đồng Khởi
Been thanked: 9 time
Liên hệ:

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi thuongall » T.Bảy 09/05/2009 12:17 pm

Không biết cái này có đúng không:

Mã: Chọn hết

  1. Private Sub Form_Load()
  2.     Dim sTmp As String
  3.     Dim sR As String
  4.     Dim sG As String
  5.     Dim sB As String
  6.     Dim lColor As Long
  7.     lColor = 65535
  8.     sTmp = Right$("000000" & Hex(lColor), 6)
  9.     sR = Right$(sTmp, 2)
  10.     sG = Mid$(sTmp, 3, 2)
  11.     sB = Left$(sTmp, 2)
  12.     MsgBox "R: " & Hex2Dec(sR) & " - G: " & Hex2Dec(sG) & " - B: " & Hex2Dec(sB)
  13. End Sub
  14.  
  15. Private Function Hex2Dec(sHex As String) As Integer
  16.     Dim i As Integer
  17.     Dim LenStr As Integer
  18.     Dim sChar As String
  19.     Dim Num As Integer
  20.     LenStr = Len(sHex)
  21.     For i = LenStr To 1 Step -1
  22.         sChar = Mid$(sHex, i, 1)
  23.         Select Case sChar
  24.             Case "0" To "9": Num = Num + Val(sChar) * 16 ^ (LenStr - i)
  25.             Case "A": Num = Num + 10 * 16 ^ (LenStr - i)
  26.             Case "B": Num = Num + 11 * 16 ^ (LenStr - i)
  27.             Case "C": Num = Num + 12 * 16 ^ (LenStr - i)
  28.             Case "D": Num = Num + 13 * 16 ^ (LenStr - i)
  29.             Case "E": Num = Num + 14 * 16 ^ (LenStr - i)
  30.             Case "F": Num = Num + 15 * 16 ^ (LenStr - i)
  31.             Case Else
  32.         End Select
  33.     Next
  34.     Hex2Dec = Num
  35. End Function

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4761
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: 515 time

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi truongphu » T.Bảy 09/05/2009 12:56 pm

Cũng không biết thế nầy đúng không?

Mã: Chọn hết

  1. Private Function TachMau(Mau As Long) As String
  2. dim red as long, green as long, blue as long
  3. red = Mau And &HFF
  4. green = (Mau And &HFF00&) \ &H100&
  5. blue = (Mau And &HFF0000) \ &H10000
  6. TachMau = "R: " & CStr(red) & " G: " & CStr(green) & " B: " & CStr(blue)
  7. End Function
  8.  
  9. Private Sub Command1_Click()
  10. MsgBox TachMau(65535)
  11. End Sub
o0o--truongphu--o0o

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

Hình đại diện của người dùng
1045007
Thành viên danh dự
Thành viên danh dự
Bài viết: 551
Ngày tham gia: T.Hai 09/06/2008 3:35 pm
Đến từ: TP Cần Thơ
Has thanked: 2 time
Been thanked: 64 time
Liên hệ:

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi 1045007 » T.Bảy 09/05/2009 1:19 pm

Cho ké! các bác xài số thập lục phân em xài 255 phân >:)

Mã: Chọn hết

  1. i = 1000000
  2. Dim a, r, g, b As Integer
  3. b = i Mod 256
  4. g = (i \ 256) Mod 256
  5. r = ((i \ 256) \ 256) Mod 256
  6. a = (((i \ 256) \ 256) \ 256) Mod 256
  7. MsgBox(a & "-" & r & "-" & g & "-" & b)
Xếp hình cổ điển for Android-https://play.google.com
♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀♂♀

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4761
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: 515 time

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi truongphu » T.Bảy 09/05/2009 2:42 pm

1045007 đã viết:Cho ké! các bác xài số thập lục phân em xài 255 phân >:)

Tôi nghịch một chút, lại gặp 1045007 có tính "bốc"
thì đây: hệ thập phân cho đủ bộ sưu tập... :D

Mã: Chọn hết

  1. Private Function TachMau(Mau As Long) As String
  2. Dim R As Long, G As Long, B As Long
  3. R = Mau And 255
  4. G = (Mau \ 256) And 255
  5. B = (Mau \ 65536) And 255
  6. TachMau = "R: " & R & " G: " & G & " B: " & B
  7. End Function


Mã: Chọn hết

  1. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  2. Private Function TáchMau(Mau As Long) As String
  3. Dim m(2) As Byte
  4. CopyMemory m(0), Mau, 3
  5. TáchMau = "R: " & m(0) & " G: " & m(1) & " B: " & m(2)
  6. End Function
o0o--truongphu--o0o

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

Hình đại diện của người dùng
clarkkent
Mạnh Thường Quân
Mạnh Thường Quân
Bài viết: 1641
Ngày tham gia: T.Tư 16/04/2008 11:25 am
Đến từ: Chợ Lách - Bến Tre
Been thanked: 31 time
Liên hệ:

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi clarkkent » T.Bảy 09/05/2009 3:09 pm

tối đa cũng chỉ 16777215 :D

Mã: Chọn hết

  1. MsgBox RGB(255, 255, 255)


Mã: Chọn hết

  1. Function toRGB(iColor As Long) As String
  2. iR = iColor Mod &H100: iG = (iColor \ &H100) Mod &H100: iB = (iColor \ (&H100 ^ 2)) Mod &H100
  3. toRGB = "R:" & iR & " - G:" & iG & " - B:" & iB
  4. End Function


Mã: Chọn hết

  1. Private Sub Command1_Click()
  2. MsgBox toRGB(16777215)
  3. End Sub
• Hôm bây: www.tinsoftware.com ^ ^
Cố gắng lên...

Hình đại diện của người dùng
little_boi
Thành viên chính thức
Thành viên chính thức
Bài viết: 23
Ngày tham gia: T.Hai 04/05/2009 11:24 am
Đến từ: Vũng Tàu
Been thanked: 2 time
Liên hệ:

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi little_boi » T.Bảy 09/05/2009 7:12 pm

Xin cảm ơn nhiều. Tiện đây xin cho em hỏi lun R = Mau And 255.Cái chữ And đặt đó làm gì...Em đã thử test thử 1 And 2 thì nó bằng 0 là sao??? :-/
MSGBOX "ILUSM", vbExclamation

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4761
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: 515 time

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi truongphu » T.Bảy 09/05/2009 8:12 pm

And là phép toán trên hệ nhị phân (không phải hệ 10)
1-> 01
2-> 10
01 AND 10 = 00

Muốn test thêm, cứ gọi Calc ra, nhấn chữ Bin rồi tha hồ thử...

Chú nhỏ nầy cứ hỏi tới một hồi thì cũng gay
Hãy đọc thêm Sổ tay VB sau đây (và không được hỏi nữa à nha)
Tập tin đính kèm
SoTay TongHop.rar
(69.63 KiB) Đã tải 381 lần
o0o--truongphu--o0o

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

Hình đại diện của người dùng
little_boi
Thành viên chính thức
Thành viên chính thức
Bài viết: 23
Ngày tham gia: T.Hai 04/05/2009 11:24 am
Đến từ: Vũng Tàu
Been thanked: 2 time
Liên hệ:

Re: Cách đổi từ màu pha sang màu đơn

Gửi bàigửi bởi little_boi » T.Bảy 09/05/2009 8:25 pm

Tại cháu mói vọc vb ... nên còn nhiều thứ phải học lắm! Cảm ơn bác về cái sotay tổng hợp kia, rất bổ ích!
MSGBOX "ILUSM", vbExclamation


Quay về “Visual Basic 6 và Visual Basic Script (VB & VBS)”

Đ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.13 khách