The first API function I'm going to teach you about is BitBlt
.
If you already know how to use this function then this tutorial will not be of much use to you, otherwise keep on reading.
The decleration of BitBlt is a long one, check it out:
Declare Function BitBlt Lib "gdi32" ( _
ByVal hDestDC As Long, _
ByVal X As Long, _
ByVal Y As Long, _
ByVal nWidth As Long, _
ByVal nHeight As Long, _
ByVal hSrcDC As Long, _
ByVal xSrc As Long, _
ByVal ySrc As Long, _
ByVal dwRop As Long) As Long
Don't be scared off by the complex look of it. In practice it's quite easy to use.
Let's start by going through each parameter.
The first is hDestDC
and this is just a handle to the container you want to draw onto. This can be any control with a DC (which stands for device context). You can usually get the DC of a control via the hDC property. For my example we will be painting onto the form so we will use the forms hDC property for this parameter.
Then we have to pass the X
& Y
coordinates (in pixels) for where on the destination we want to start the painting. This is the equivilant of the Top & Left properties of VB controls. In this tutorial we will use 0 for both these values as we want the entire form painted from top to bottom.
We then specify the width & height (nWidth
and nHeight
) of the painting. This is equivilant to the Width & Height properties of VB controls. If the source image is larger than either of these it will be cropped (cut off at the right or bottom sides).
To cover the entire form we will need to set these as the forms height and width.
The next parameter is the source DC (hSrcDC
) which is where BitBlt gets the data to be copied over. In this tutorial we will be using the DC of the picture box that contains the image.
Then we have to give BitBlt xSrc
& ySrc
values, these are the values that BitBlt will start copying over from. For this basic tutorial they will be set as 0 always.
You might have noticed that there is no nSrcWidth
or nSrcHeight
variables. That is because BitBlt uses the nWidth
value for the destination width and source width.
The last parameter is what we use to tell BitBlt how to copy the image over.
VB contains it's own constants for this parameter so we might as well use them. You could define your own constants but as VB already provides them I think it's easiest to use the ones already provided.
In this tutorial we're only going to use vbSrcCopy
.
Comments