![]() |
![]() |
![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
To access the contents, click the chapter and section titles.
Visual Basic 6 Programming Blue Book: The Most Complete, Hands-On Resource for Writing Programs with Microsoft Visual Basic 6!
Listing 12.5 PAINTPIC.FRM. Option Explicit This constant should be predefined by VB, like vbBlackness and vbSrcCopy, but it is not, so we must do it ourselves. Const vbWhiteness = &HFF0062 Use smaller values for greater magnification. Const WIDE = 0.3 Const HIGH = 0.3 Private Sub Form_Load() Make the form the same height and a bit more than twice the width of the Picture Box. Form1.Width = 2.1 * Picture1.Width Form1.Height = 1.1 * Picture1.Height Put the first Picture Box on the left side of the form. Picture1.Left = 0 Picture1.Top = 0 Make the second Picture Box the same size as the first one (which is the size of the loaded picture because its AutoSize property is True). Picture2.Width = Picture1.Width Picture2.Height = Picture1.Height Put the second Picture Box on the right side of the form. Picture2.Top = 0 Picture2.Left = Form1.ScaleWidth - Picture2.Width End Sub Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim XSrc As Single, YSrc As Single Dim X1 As Single, Y1 As Single, W1 As Single, H1 As Single Dim row As Integer, col As Integer If Button = vbLeftButton Then Left button Calculate the source rectangle X coordinate. Be sure the resulting rectangle does not extend past the Picture Box edge on either the left or the right. XSrc = X - ((Picture1.Width * WIDE) / 2) If XSrc < 0 Then XSrc = 0 If (XSrc + (WIDE * Picture1.Width)) > Picture1.Width Then XSrc = Picture1.Width * (1 - WIDE) End If Do the same for the Y coordinate. YSrc = Y - ((Picture1.Height * HIGH) / 2) If YSrc < 0 Then YSrc = 0 If (YSrc + (HIGH * Picture1.Height) > Picture1.Height) Then YSrc = Picture1.Height * (1 - HIGH) End If Paint the contents of the rectangle to the destination Picture Box. Picture2.PaintPicture Picture1.picture, 0, 0, Picture2.WIDTH, _ Picture2.HEIGHT, XSrc, YSrc, Picture1.Width * WIDE, _ Picture1.Height * HIGH, vbSrcCopy End If If Button = vbRightButton Then Right button. W1 = Picture2.Width / 3 H1 = Picture2.Height / 3 The black background. Picture2.PaintPicture Picture1.Picture, 0, 0, Picture2.Width, _ Picture2.Height, 0, 0, , , vbBlackness For row = 1 To 3 For col = 1 To 3 X1 = (row - 0.95) * W1 Y1 = (col - 0.95) * H1 The white border. Picture2.PaintPicture Picture1.Picture, (row - 0.95) * W1, _ (col - 0.95) * H1, W1 * 0.9, H1 * 0.9, , , , , vbWhiteness The picture. Picture2.PaintPicture Picture1.Picture, (row - 0.9) * W1, _ (col - 0.9) * H1, W1 * 0.8, H1 * 0.8, 0, 0, _ Picture1.Width, Picture1.Height, vbSrcCopy Next col Next row End If End Sub Using The Image ControlThe Image control is another way to display images on your forms. When displaying bitmaps and metafiles, the Image control behaves very much like a Picture Box control. It has only some of the Picture Boxs capabilities, which means that an Image control is faster and takes up less of your precious system resources. Image controls are your best bet for displaying pictures; use a Picture Box only when you need its extra features. Table 12.5 will give you an idea of the differences between the two controls. The Image control is specialized for displaying pictures, and thats about it. Note, however, that the Image control has one capability that the Picture Box lacks: the ability to stretch or shrink an image to fit the Image controls dimensions, without resorting to the PaintPicture method. This is controlled by the Image controls Stretch property, which can be set to True or False. The Picture ObjectThe best way to think of the Picture object is as a temporary storage location for images. Thats about all it can do; it does not display or manipulate images in any way. You can load a Picture object with the same image formats that are supported by the Picture Box control. Then, as needed, you can transfer the images to a Picture Box control for display. Because a Picture object uses much less memory and resources, this approach is preferred to the technique of using invisible Picture Box controls as a staging location for images. To demonstrate, Ill show you how to use the Picture object to create a simple animation. To start, I use a graphics program to create a series of simple images; the first one is shown in Figure 12.9. The other three images are essentially identical, but have the black bar pointing at different angles. I saved these images as SPIN1.BMP through SPIN4.BMP.
The projects form contains one Picture Box, one Timer, and one control array of three Command Buttons. The objects and properties are summarized in Listing 12.6. I called both the project and the form PICTUREDEMO. Listing 12.6 Objects and properties in PICTUREDEMO.FRM. Begin VB.Form Form1 Caption = Picture Object Demo Begin VB.CommandButton Command1 Caption = Exit Index = 2 End Begin VB.CommandButton Command1 Caption = Stop Index = 1 End Begin VB.CommandButton Command1 Caption = Start Index = 0 End Begin VB.Timer Timer1 End Begin VB.PictureBox Picture1 End End
|
![]() |
Products | Contact Us | About Us | Privacy | Ad Info | Home
Use of this site is subject to certain Terms & Conditions, Copyright © 1996-2000 EarthWeb Inc. All rights reserved. Reproduction whole or in part in any form or medium without express written permission of EarthWeb is prohibited. Read EarthWeb's privacy statement. |