[prev in list] [next in list] [prev in thread] [next in thread]
List: squeak-dev
Subject: Re: Icons
From: Bob Arning <arning () charm ! net>
Date: 2001-06-29 12:46:08
[Download RAW message or body]
Ross,
On Fri, 29 Jun 2001 01:12:09 -0700 Ross Boylan <RossBoylan@stanfordalumni.org> wrote:
> If I want to make a little icon, what's the best way to do it? Can it be
> done with the internal painting tool?
There are several possible ways:
1. Use the normal painting tool (the paintbrush on the navigator or "make a new \
drawing" from the new morph menu). When you "keep" the painting, you will have a \
SketchMorph which you can inspect or explore to get to the Form that you just \
painted. From the explorer or inspector, write a simple bit of code to put that Form \
somewhere (like ScriptingSystem or elsewhere) for future use. Or you can print "self \
storeString" when inspecting the form to get actual code you can put in a method.
2. Use the fat bits tool as Karl suggests. Do something like
(Form extent: 32@32 depth: 16) bitEdit
There are lots of useful tools in the red halo menu. When you are done, use "inspect" \
from this menu to get at the Form and use one of the techniques from above to save it \
for posterity.
3. Sometimes it seems easier (at least to geeks like me) to create it \
programmatically. Here is a stop button for a vcr controller widget:
makeStopButton
| f aButton |
f _ Form extent: 24@15 depth: 32.
f fillColor: Color gray.
f
fill: (f boundingBox center - (4@4) extent: (8@8))
rule: Form over
fillColor: Color white.
aButton _ IconicButton new borderWidth: 0;
labelGraphic: f;
color: Color gray;
actWhen: #buttonUp;
useRoundedCorners.
^aButton
Advantages:
#1 makes for easy painting, but is sometimes difficult to do precise work in smaller \
sizes. Also, if an exact image size is important, this is extra work.
#2 allows for fine control at the pixel level, but it's tougher to do larger objects \
like circles, etc.
#3 requires some coding expertise, but can produce very precise images when they can \
be described in terms of lines, rectangles, etc. An additional technique to use here \
is to draw the thing at 2x or 4x initially and then reduce the final image using \
WarpBlt. This will anti-alias the edges and can produce a nice clean image in small \
sizes.
> I have a hazy recollection of seeing a recommendation to use an external
> paint program and then importing the result (into one of the image or
> button morphs?).
You can certainly do that. Squeak can read GIF, JPG, BMP, PNG and perhaps others I \
have forgotten. Once you have it in Squeak, techniques like those above can copy all \
or part of the image for use in your UI.
> While poking around I found the forms dictionary in Scripting System. Can
> anyone tell me if the code that populates it is in the system, or are we
> left only with the artifact? (I found some code for a few items, but not
> most).
I think the general practice is to include the code that adds things to \
ScriptingSystem as a postscript to a changeset. That way the code does not need to be \
kept in the system forever (it would essentially be a duplicate in terms of space).
Cheers,
Bob
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic