Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Sep 22, 2001



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Setting a pixel color

The PSet method is much slower than it should actually be, and in most cases you will find it convenient to substitute it with direct calls to the SetPixel API functions. This function is about twelve times faster than the VB's method, at least when you can set the form's ScaleMode to Pixels, for more or less the same reasons for which the GetPixel API function is faster than the Point method. The next routine changes all red pixels to yellow, and is about 2.5 times faster than an equivalent routine built on VB's equivalent methods:

Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, _
    ByVal y As Long) As Long
Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, _
    ByVal y As Long, ByVal crColor As Long) As Long

Private Sub Form_Click()
    Dim x As Long, y As Long, h As Long
    h = Me.hdc
    ' assumes that form's ScaleMode
    ' is set to 3 - Pixels
    For y = 0 To ScaleHeight - 1
        For x = 0 To ScaleWidth - 1
            If GetPixel(h, x, y) = vbRed Then
                SetPixel h, x, y, vbYellow
            End If
End Sub
Francesco Balena
Comment and Contribute






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



Thanks for your registration, follow us on our social networks to keep up-to-date