(Example: +cartoon +desktops)
Advanced Search & Tips
See the Home Page side bar for links to more sections!
App Makeovers Desktop Pictures Icons MacOS X Mods Safari Stuff
Application Splashes Dock Poofs iTunes Skins MacOS X Themes Snapshots
Boot Images Download Stats Links Page Mouse Cursors Uploads
Boot Panels GUI Software Login Panels REALbasic User Forum
Clocks Home Page
Download a free demo of REALbasic!
Download a free demo of REALbasic!
Recent Articles...
3D
3D Photo Gallery Part 2 (12-06-01)
3D Photo Gallery Part 1 (11-29-01)

Audio
iPod Tricks (Part 1)
Laugh Track Machine
Audio Player with Reverb
Shepard Melody(11-08-01)
RB Phone Home (10-25-01)
Build a Drum Machine (10-04-01)

General RB
Hey! You got your Checkbox in my Listbox!
Background Applications (5-02-03)
Listbox Auto-Find
iTunes-style Listboxes
Virtual Volumes
Time Tracker
Software Distribution Part 4
Software Distribution Part 3
Software Distribution Part 2
Software Distribution Part 1
Exceptions
Custom Controls (8-2-01)
Living on the Edge (6-21-01)
Tips and Tricks (6-14-01)
Review of REALbasic 3.0 (2-19-01)
Text Clippings Made Easy (5-10-01)

Graphics
Image Spinner
Cropping Graphics (Part 4)
Cropping Graphics (Part 3)
Cropping Graphics (Part 2)
Cropping Graphics (Part 1)
Shimmer Graphics
Lissajous Figures
Simple Screen Capture
Vector Graphics
Kaleidoscope Images
Stegonography
Spirals!
Image Table (11-15-01)
RB Magnifying Lens (10-11-01)
Screen Capture (8-9-01)
Color Picker Tutorial (6-7-01)

Hacks
Ghost Grab
Speedy Mouse Extension(11-01-01)
iTunes Plugins (8-23-01)
iTunes Skinner (7-26-01)

Internet
HTML IMG Tags
Version Tracking
Even Smarter Instant Messaging
Web Tiler
JavaScript and REALbasic (10-02-01)
Stock Ticker - Part II (9-06-01)
Stock Ticker - Part I (8-30-01)
AIM Mate (8-16-01)

Mac OS X
Using Sheets in REALbasic
Build a Bundle Part 2
Build a Bundle Part 1
Dock Your Passwords
Mac OS X Debugging
REALbasic Mac OS X Icon Tutorial (12-13-01)
Animate Your Dock (5-17-01)
RB and the Command Line (5-3-01)

Novelty
Guessing Game
Calendar Trivia
Tile Mixer
Zip Code Finder
Happy Valentine's Day
Merlin Simulator Part 3 (01-24-02)
Merlin Simulator Part 2 (01-17-02)
Merlin Simulator Part 1 (01-10-02)
Buzzword Machine (10-18-01)
AppleSoft BASIC (9-20-01)

Printing
Print to PDF

Resources
Picture Extractor 2 (5-31-01)
Picture Extractor 1 (5-24-01)

Serial
Caller ID Part 3 (7-12-01)
Caller ID Part 2 (7-5-01)
Caller ID Part 1 (6-28-01)

Speech
Speech Recognition (9-13-01)
Video
Big Brother Video Capture

Newest Dev Tools!

Book Alert !
REALbasic for Dummies
by Erick Tejkowski
$19.99 @ Amazon

Made with REALbasic!

Problems?
Downloads are in StuffIt 5 format (free download).
Tell me about a bad link (Thanks!).
Submission Policy

2-7-03

Cropping Graphics with REALbasic by Erick Tejkowski

This week we'll begin a multi-part tutorial about cropping graphics with REALbasic. These tutorials will cover the basics of how to implement click-and-drag graphics selection and cropping, like you'll find in most popular graphics applications.

The tutorial emulates a Cocoa project available from Apple. As we progress through the project each week, we'll add various features to match the original example. So, go check out the original example and come back here ready for some REALbasic coding. NOTE: This demo is made with OS X in mind.

Build the Interface
Launch REALbasic, and add two Canvas controls to Window1. Resize each one to a size of 256 x 256. You can position them anywhere in the window that you want, but if you are trying to match the Cocoa project, position them next to each other in a horizontal arrangement.

02-07-03_1.jpg (17k)

You should also add a 256 x 256 image to your REALbasic project. If you don't have an image, one accompanies the project download at the end of this tutorial. It is named scenery.

Add the Code
Double-click the Window Editor of Window1 to open its Code Editor. Choose Edit-New Property and create the following properties.

  • lastX as integer
  • lastY as integer
  • pictureDest as picture
  • pictureSrc as picture
  • startX as integer
  • startY as integer

To initialize the two Picture objects, add the following code to the Open event of Canvas1:

  pictureSrc = newpicture(canvas1.width,canvas1.height,32)
  pictureDest = newpicture(canvas1.width,canvas1.height,32)
  
  pictureSrc.graphics.drawpicture scenery,0,0
  pictureDest.graphics.drawpicture scenery,0,0

Next, enter this code in the MouseDown event of Canvas1 to begin a click-and-drag operation:

  startX = X
  startY = Y
  lastX = X
  lastY = Y
  
  return true

Then, add this code to the MouseDrag event of Canvas1 to track the drag operation:

  dim g as graphics
  
  g=pictureSrc.graphics
  
  if lastx<>x OR lasty<>y then
    
    lastX = X
    lastY = Y
    
    g.foreColor=rgb(255,255,0)
    g.drawpicture scenery,0,0
    g.drawrect startX,startY,lastX-startX,lastY-startY
    
    g=me.graphics
    g.foreColor=rgb(255,255,0)
    g.drawpicture scenery,0,0
    g.drawrect startX,startY,lastX-startX,lastY-startY
    
  end if

Next, we'll need to handle the MouseUp event of Canvas1. This code takes care of copying the selection from the source image to the destination image, which will appear in Canvas2.

  dim g,gg as graphics
  
  
  g=pictureDest.graphics
  gg=canvas2.graphics
  
  g.clearrect 0,0,g.width,g.height 
  gg.forecolor=rgb(255,255,255)
  gg.fillrect 0,0,g.width,g.height 
  
  if startX<lastX and startY<lastY then
    g.drawpicture scenery,startX,startY,lastX-startX,lastY-startY,startX,startY,lastX-startX,lastY-startY
    gg.drawpicture scenery,startX,startY,lastX-startX,lastY-startY,startX,startY,lastX-startX,lastY-startY
  elseif startX>lastX and startY>lastY then
    g.drawpicture scenery,lastX,lastY,startX-lastX,startY-lastY,lastX,lastY,startX-lastX,startY-lastY
    gg.drawpicture scenery,lastX,lastY,startX-lastX,startY-lastY,lastX,lastY,startX-lastX,startY-lastY
  elseif startX>lastX then
    g.drawpicture scenery,lastX,startY,startX-lastX,lastY-startY,lastX,startY,startX-lastX,lastY-startY
    gg.drawpicture scenery,lastX,startY,startX-lastX,lastY-startY,lastX,startY,startX-lastX,lastY-startY
  elseif startY>lastY then
    g.drawpicture scenery,startX,lastY,lastX-startX,startY-lastY,startX,lastY,lastX-startX,startY-lastY
    gg.drawpicture scenery,startX,lastY,lastX-startX,startY-lastY,startX,lastY,lastX-startX,startY-lastY
  end if

To draw the image in Canvas1, add this code to the Paint event of Canvas1:

  g.drawpicture pictureSrc,0,0

Finally, to draw in Canvas2, add this code to its Paint event:

  g.forecolor=rgb(255,255,255)
  g.fillrect 0,0,me.width,me.height
  g.drawpicture pictureDest,0,0

That's it! Choose Debug-Run to test your work.

02-07-03_2.jpg (21k)

Conclusion
You can download the completed project here. We'll continue adding features to the project next week. See you then!


2-5-03

REALbasic News by Erick Tejkowski

Lorin Leaves
REAL Software's Vice President of Marketing, Lorin Rivers, has announced that he will be leaving the REALbasic team, effective this week. Since Lorin is one of the people responsible for getting the REALbasic section at ResExcellence up and running, we wish him the best of luck on his new endeavors!

Control Safari with REALbasic
MACbase has posted a combination REALbasic and AppleScript tutorial that shows you how to make a floating window manager for Safari.

Project Vacuum
The La Jolla Underground has announced the immediate availability of Project Vacuum 1.0. Project Vacuum is designed to work with the REALbasic IDE to merge all external code items into a single project file. It will merge all external classes, modules and windows into the main project and save the resulting file as xml. This file may then be used with other utilities (for instance the Pulp profiling tool) or transfered to other individuals. At this time, only external code items are merged into the project - other external items, like AppleScripts, images and resource files, will not be added to the project.

cPictureButton 1.1
Scott Crick has updated his cPictureButton class to Version 1.1. cPictureButton is a canvas-based control that allows developers to create button controls with complex appearances and shapes. While these buttons are not Appearance Manager compliant, they do allow the developer to break with the rectangle-based buttons currently available. All the developer has to do is supply a picture that is how the button is supposed to look in its various states tand a mask of the button's shape and the class does the rest. It's easy to create buttons that are round, polygons or even more wildly shaped!

Assorted Goodies
Seth Willits has been hard at work. He has two offerings for REALbasic developers:

  • The REAL Database Guide which has received praise from dozens of readers has been updated and revised for the new database related classes in 4.5.
  • Single selection listbox - It lets you select a single cell in a listbox instead of the entire row. Implemented as a class, so you can use instances of it, or you can also set it to the super of your custom listbox subclasses.


See the Home Page side bar for links to more sections!
App Makeovers Desktop Pictures Icons MacOS X Mods Safari Stuff
Application Splashes Dock Poofs iTunes Skins MacOS X Themes Snapshots
Boot Images Download Stats Links Page Mouse Cursors Uploads
Boot Panels GUI Software Login Panels REALbasic User Forum
Clocks Home Page

Maintained by the Staff of ResExcellence. This entire site ©1997-2003 ResExcellence
Privacy Statement? Sure we gotta Privacy Statement.

[an error occurred while processing this directive]on the ResEx LinuxPPC Server