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


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

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
        Next
    Next
End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap