|
7-25-02
Creating Vector Graphics with REALbasic by
Erick Tejkowski
This week we'll continue examining some of the new features in REALbasic 4.5. This time, it's vector graphics!
REALbasic 4.5 has some brand-spanking-new classes to give you the ability to create vector graphics in your projects.
NOTE: This project requires REALbasic 4.5 or newer!
So far, you're probably most familiar with bitmap graphics, where you fill in the various squares of an
imaginary grid with color. Examples of bitmap graphics include GIF, JPEG, and PICT(sometimes).
Vector graphics, on the other hand, are drawings based on numerical formulas. You've seen vector files in action
whenever you've viewed a pdf file in Acrobat or a drawing document in AppleWorks, or watched a Flash video on the web.
Whereas bitmap graphics
are a fixed size and orientation, vector graphics, with their formulaic-way of drawing, don't have the same constraints.
Because of this, you can rotate and scale a vector image without loss of quality.
Build the Interface
Launch REALbasic and open Window1 from the Project window. To this window, add the following controls:
| Control Type | Control Name | Other Properties |
| PushButton | zoomButtonIn | Caption="Zoom In" |
| PushButton | zoomButtonOut | Caption="Zoom Out" |
| PushButton | rotateButtonRt | Caption="Rotate Rt." |
| PushButton | rotateButtonLeft | Caption="Rotate Left" |
| Canvas | Canvas1 | Width=500;Height=375 |
Arrange the interface however you'd like, but it might look like this:
Source Code
Before you begin adding code, you need to add a property to Window1. Double-click Window1 to open its
Code Editor. Select the Edit-New Property menu and create a new property.
The first bit of code goes in the Open event of Window1.
Dim r as RectShape
Dim p as Picture
//create a Group2D object
d=New Group2D
//create a picture object for displaying the images
p=New Picture(500,375,0)
//create and define a RectShape
r=New RectShape
r.width=100
r.height=25
r.border=100
r.bordercolor=RGB(0,0,0) //black
r.fillcolor=RGB(255,0,0) // red
r.borderwidth=2
//add the rectShape to the Group2D object
d.append(r)
//place the picture on the Canvas
Canvas1.Backdrop=p
Canvas1.Backdrop.Objects=d
Next, add this line of code to the Paint event of Canvas1:
g.drawobject d,250,175
Next, you'll need to create a new method. Select Edit-New Method and create a new method named Redraw.
To this method, add the following code:
//a simple routine to redraw
//with less flicker than the paint event
dim g as graphics
g=canvas1.graphics
//erase the canvas
g.ClearRect 0,0,canvas1.width,canvas1.height
//draw objects on the canvas
g.drawobject d,250,175
The final step is to add some code for the rotate and zoom PushButtons.
rotateButtonLeft.Action()
//rotate left
canvas1.backdrop.Objects.rotation=canvas1.backdrop.Objects.rotation-0.3
redraw
End Sub()
rotateButtonRt.Action()
//rotate right
canvas1.backdrop.Objects.rotation=canvas1.backdrop.Objects.rotation+0.3
redraw
End Sub()
zoomButtonIn.Action()
//zoom in
canvas1.backdrop.Objects.Scale=canvas1.backdrop.Objects.Scale*1.1
redraw
End Sub()
zoomButtonOut.Action()
//zoom out
canvas1.backdrop.Objects.Scale=canvas1.backdrop.Objects.Scale*0.9
redraw
End Sub()
Conclusion
To test the project, select the Debug-Run menu. The demo draws a simple rectangle on the screen and lets you
zoom in/out and rotate the object in both directions. As usual you can
download the completed project instead of creating it by hand.
Use your imagination when playing with the new vector features of REALbasic 4.5. There are many useful scenarios for using this feature, so
it's a welcome addition to REALbasic. Have fun and see you next week!
7-23-02
REALbasic News
by
Erick Tejkowski
REALbasic 4.5 Release!
Last week, REAL Software announced the availability of REALbasic 4.5. This release has lots of new features,
including:
- New Build Settings dialog; streamlined and easier to use.
- Icon Compositor Dialog
- Dozens of new QuickTime features
- New Vector Graphics Classes
- RB3D Improvements
- RbScript for Windows
- mySQL Support
As you can tell, there's a lot of good stuff in there... and, this is just the tip of the iceberg! Besides many other new
features, you'll find loads of improvements and bug fixes too. It's a great new release, so don't miss it!
SortLibrary
Charles Yeomans has posted SortLibrary 1.9.
SortLibrary is a free, open-source REALbasic library providing robust, optimized implementations
of several standard sorting algorithms for use by REALbasic developers.
Version 1.9 has a rewrite of BinarySearch.
New REALbasic Hotline Community
There's a new REALbasic-related Hotline server. To visit it, just enter its address
into your favorite Hotline client:
chat.spirit.it:6000
Virtual Volume Browser
One of REALbasic 4.5's new features is the VirtualVolume,
which allows you to encapsulate a complex structure of files and folders into a single archive.
You can createVirtualVolumes with RealBasic, but you have nothing to browse what is
inside it. To help out, Kualo Software created
Virtual Volume Browser.
CFPlugin
Kevin Ballard has released CFPlugin. CFPlugin is a free REALbasic plugin that provides access to the
CoreFoundation classes and the Property List Services, allowing you to
create and parse .plists.
Graphics Plugins
Two new graphics plugins have appeared on the REALbasic scene.
- Einhugur PictureEffects
- GXLIBRARY
Both look great, so stop by and give them a test run.
|