dcsimg
Login | Register   
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Oct 14, 1999

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


Translate Color Values Faster

This tip is an update to "Translate Color Values". That method converted numbers to strings, then performed string manipulation to get individual RGB values. This solution uses a concept near and dear to C programmers-unions-and is an order of magnitude faster.

With the RGB function, VB provides a neat and valuable tool for converting separate Red, Green, and Blue values into a single Long color value. However, VB doesn't provide any way to convert this color value back to its constituent RGB values. Enter the much-feared LSet command, which copies the storage of one user-defined type (UDT) onto another.

Put this code in a module:

 
Public Type RGB_TYPE
	R As Byte
	G As Byte
	B As Byte
	Filler As Byte
End Type

Private Type RGB_FULL_TYPE
	lngRGB As Long
End Type

Public Function ToRGB(ByVal vlngColor As Long) _
	As RGB_TYPE
	Dim udtRGBFull As RGB_FULL_TYPE
	udtRGBFull.lngRGB = vlngColor
	' Poor man's C Union
	LSet ToRGB = udtRGBFull
End Function
To use this function, put a picture in a form's Picture property, and insert this code:
 
Private Sub Form_MouseUp(Button As Integer, _
	Shift As Integer, X As Single, Y As Single)
	Dim udtRGB As RGB_TYPE
	udtRGB = ToRGB(Point(X, Y))
	With udtRGB
		Me.Caption = "R=" & .R & " G=" & .G & _
			" B=" & .B
	End With
End Sub
Click on different places on the picture. VB3 users must return the values differently, because before VB4 VB didn't support the return of a UDT.
Richard Lindauer
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date