lph
asked on
Stretching Picture Box
I need to know how to stretch a picturebox...i insist on using picture box and not image box because i need to use the hDC property for my picture box... how do i set the picturebox so that when i enlarge or shrink it, the image will follow suit as well?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
This an example: (picture1 has the source picture, the following code make it 2* in the picture2. The code can get the picture's actual size if the autosize not been set to true)
Dim fWidth As Double, fHeight As Double
With Picture1
If .AutoSize Then
fWidth = .ScaleWidth
fHeight = .ScaleHeight
Else
fWidth = .ScaleX(.Picture.Height, vbHimetric, .ScaleMode)
fHeight = .ScaleY(.Picture.Width, vbHimetric, .ScaleMode)
End If
End With
Picture2.PaintPicture Picture1, 0, 0, 2 * fWidth, 2 * fHeight, 0, 0, fWidth, fHeight, vbSrcCopy
When you want shrink it, you just need change the parameters 2*fWidth and 2*fHeight to the Width and Height you needed (should use the same scalemode as that of picture1, use scalex and scaley to change it when needed.)
Dim fWidth As Double, fHeight As Double
With Picture1
If .AutoSize Then
fWidth = .ScaleWidth
fHeight = .ScaleHeight
Else
fWidth = .ScaleX(.Picture.Height, vbHimetric, .ScaleMode)
fHeight = .ScaleY(.Picture.Width, vbHimetric, .ScaleMode)
End If
End With
Picture2.PaintPicture Picture1, 0, 0, 2 * fWidth, 2 * fHeight, 0, 0, fWidth, fHeight, vbSrcCopy
When you want shrink it, you just need change the parameters 2*fWidth and 2*fHeight to the Width and Height you needed (should use the same scalemode as that of picture1, use scalex and scaley to change it when needed.)
ASKER
can i know how to flip a bitmap as well using the PaintPicture method... i tried passing negative values as the parameters for the picWidth and picSource, but it wont flip...
can u pls give me an example on this?
thanx in advance!
can u pls give me an example on this?
thanx in advance!
What's the meaning of flip? If you only want to get part of the source file, just modify the code like this:
Picture2.PaintPicture Picture1, destX, destY, destWidth, destHeight, srcX, srcY, srcWidth, srcHeight, vbSrcCopy
Change the dest??? can change the result postion in the destination and the srcX and srcY is the left and top position of the source where the selection start. You can get the help of the method for more detail.
Picture2.PaintPicture Picture1, destX, destY, destWidth, destHeight, srcX, srcY, srcWidth, srcHeight, vbSrcCopy
Change the dest??? can change the result postion in the destination and the srcX and srcY is the left and top position of the source where the selection start. You can get the help of the method for more detail.
ASKER
what i mean for flip is the left side of the picture box is the mirror image for the right side and the right side is the mirror image of the left side... as in the MS Paint function where you can flip the image... according to the help, i can flip the image when negative values are passed as the destWidth and destHeight...
however i don't get the desired results.... pls help!
however i don't get the desired results.... pls help!
Then you need call the method two times , first mirror the left part then the right part, what you need is change the dest???.
The following code can change the left half part and the right half part ( the autosize of picture1 is true)
With Picture1
Picture2.PaintPicture Picture1.Picture, 0, 0, .ScaleWidth / 2, .ScaleHeight, .ScaleWidth / 2, 0, .ScaleWidth / 2, .ScaleHeight, vbSrcCopy
Picture2.PaintPicture Picture1.Picture, .ScaleWidth / 2, 0, .ScaleWidth / 2, .ScaleHeight, 0, 0, .ScaleWidth / 2, .ScaleHeight, vbSrcCopy
End With
With Picture1
Picture2.PaintPicture Picture1.Picture, 0, 0, .ScaleWidth / 2, .ScaleHeight, .ScaleWidth / 2, 0, .ScaleWidth / 2, .ScaleHeight, vbSrcCopy
Picture2.PaintPicture Picture1.Picture, .ScaleWidth / 2, 0, .ScaleWidth / 2, .ScaleHeight, 0, 0, .ScaleWidth / 2, .ScaleHeight, vbSrcCopy
End With
ASKER
the flip method you proposed actually copies the right side to the left side and the left side to the right side..not really what i wanted.. i'm actually trying to create a mirror image of the left side and the right side...
after experimenting for a while, i managed to make the bitmap flip by passing the negative value as the dest width. This is what i wanted:
PicX PaintPicture PicX, picX.Width, 0, -picX.Width, picX.Height,,,,vbSrcCopy
anyway thanks for suggesting the PaintPicture method to me...
after experimenting for a while, i managed to make the bitmap flip by passing the negative value as the dest width. This is what i wanted:
PicX PaintPicture PicX, picX.Width, 0, -picX.Width, picX.Height,,,,vbSrcCopy
anyway thanks for suggesting the PaintPicture method to me...
ASKER