Programming a Pencil Tool on Paint?

Here's my code for Scribble(a pencil tool) and its superclass Shape. Basically, my program remembers where the mouse has been and draws a line from the previous point to the current point. However, the scribble doesn't show up (occasionally you will see a small line at the very end) I think the problem is that each Scribble object only has one previous and one current. Therefore, there is only 1 line left at the end. How can I correct this?
Thanks in advance!
Note: this doesn't run since there are about 5 other classes needed. I guess can post them if you want? xD
import java.awt.*;
public class Scribble extends Shape{
     protected Point startpt, endpt;
     protected Point previous, current;
     int count = 0;
    public Scribble(Point start, DrawingCanvas dcanvas){
     super();
     System.out.println("SCRIBBLE CREATED!!!!!!!\n\n");
     startpt = start;
     current = start;
     endpt = start;
     canvas = dcanvas;
     bounds = new Rectangle(start);
    public void resize(Point anchor, Point end){
     super.resize(anchor, end);
     previous = current;
     startpt = anchor;
     current = end;
     endpt = end;
    public void translate(int dx, int dy){
     super.translate(dx, dy);
     previous.translate(dx, dy);
     current.translate(dx, dy);
     startpt.translate(dx, dy);
     endpt.translate(dx, dy);
    public void draw(Graphics g, Rectangle regionToDraw){
          count++;
          System.out.println(count);
     if (!bounds.intersects(regionToDraw)){
         return;
     g.setColor(super.getColor());
     g.drawLine((int)previous.getX(), (int)previous.getY(), (int)current.getX(), (int)current.getY());
     if (isSelected) { // if selected, draw the resizing knobs
                       // along the 4 corners
         Rectangle[] knobs = getKnobRects();
         for (int i = 0; i < knobs.length; i++)
          g.fillRect(knobs.x, knobs[i].y,
               knobs[i].width, knobs[i].height);
protected Rectangle[] getKnobRects(){
     Rectangle[] knobs = new Rectangle[2];
     knobs[0] = new Rectangle((int)startpt.getX() - KNOB_SIZE/2,
                    (int)startpt.getY() - KNOB_SIZE/2, KNOB_SIZE, KNOB_SIZE);
     knobs[1] = new Rectangle((int)endpt.getX() - KNOB_SIZE/2,
                    (int)endpt.getY()- KNOB_SIZE/2, KNOB_SIZE, KNOB_SIZE);
     return knobs;
protected int getKnobContainingPoint(Point pt){
     if (!isSelected) return NONE;
     Rectangle[] knobs = getKnobRects();
     for (int i = 0; i < knobs.length; i++)
     if (knobs[i].contains(pt))
          return i;
     return NONE;
}import java.awt.*;
import java.util.*;
import java.io.*;
public abstract class Shape implements Serializable, Cloneable{
     private Color color;
protected Rectangle bounds;
protected boolean isSelected;
public DrawingCanvas canvas;
protected static final int KNOB_SIZE = 6;
protected static final int NONE = -1;
protected static final int NW = 0;
protected static final int SW = 1;
protected static final int SE = 2;
protected static final int NE = 3;
     Shape(){
          color = Color.darkGray;
     public Color getColor(){
     return color;
     public Object clone(){
          try{
          Shape copy = (Shape)super.clone();
          copy.setBounds(bounds);
          return copy;
          catch(CloneNotSupportedException c){
               return null;
     public void setColor(Color newColor){
     color = newColor;
     canvas.repaint();
     /** The "primitive" for all resizing/moving/creating operations that
     * affect the rect bounding box. The current implementation just resets
     * the bounds variable and triggers a re-draw of the union of the old &
     * new rectangles. This will redraw the shape in new size and place and
     * also "erase" if bounds are now smaller than before.
     protected void setBounds(Rectangle newBounds){
          Rectangle oldBounds = bounds;
          bounds = newBounds;
          updateCanvas(oldBounds.union(bounds));
     /** The resize operation is called when first creating a rect, as well as
     * when later resizing by dragging one of its knobs. The two parameters
     * are the points that define the new bounding box. The anchor point
     * is the location of the mouse-down event during a creation operation
     * or the opposite corner of the knob being dragged during a resize
     * operation. The end is the current location of the mouse.
     public void resize(Point anchor, Point end){
          Rectangle newRect = new Rectangle(anchor);
          // creates smallest rectange which
          // includes both anchor & end
          newRect.add(end);
          // reset bounds & redraw affected areas
          setBounds(newRect);
          canvas.repaint();
     /** The translate operation is called when moving a shape by dragging in
     * the canvas. The two parameters are the delta-x and delta-y to move
     * by. Note that either or both can be negative. Create a new rectangle
     * from our bounds and translate and then go through the setBounds()
     * primitive to change it.
     public void translate(int dx, int dy){
          Rectangle newRect = new Rectangle(bounds);
          newRect.translate(dx, dy);
          setBounds(newRect);
          canvas.repaint();
     /** Used to change the selected state of the shape which will require
     * updating the affected area of the canvas to add/remove knobs.
     public void setSelected(boolean newState){
          isSelected = newState;
          // need to erase/add knobs
          // including extent of extended bounds
          updateCanvas(bounds, true);
          canvas.repaint();
     /** The updateCanvas() methods are used when the state has changed
     * in such a way that it needs to be refreshed in the canvas to properly
     * reflect the new settings. The shape should take responsibility for
     * messaging the canvas to properly update itself. The appropriate AWT/JFC
     * way to re-draw a component is to send it the repaint() method with the
     * rectangle that needs refreshing. This will cause an update() event to
     * be sent to the component which in turn will call paint(), where the
     * real drawing implementation goes. See the paint() method in
     * DrawingCanvas to see how it is implemented.
     protected void updateCanvas(Rectangle areaOfChange, boolean enlargeForKnobs){
               System.out.println("canvas2 updated");
          Rectangle toRedraw = new Rectangle(areaOfChange);
          if (enlargeForKnobs)
          toRedraw.grow(KNOB_SIZE/2, KNOB_SIZE/2);
          canvas.repaint(toRedraw);
     protected void updateCanvas(Rectangle areaOfChange){
               System.out.println("canvas updated");
          updateCanvas(areaOfChange, isSelected);
          public Rectangle getBounds(){
               return bounds;
     /** When the DrawingCanvas needs to determine which shape is under
     * the mouse, it asks the shape to determine if a point is "inside".
     * This method should returns true if the given point is inside the
     * region for this shape. For a rectangle, any point within the
     * bounding box is inside the shape.
     public boolean inside(Point pt){
          return bounds.contains(pt);
     /** When needed, we create the array of knob rectangles on demand. This
     * does mean we create and discard the array and rectangles repeatedly.
     * These are small objects, so perhaps it is not a big deal, but
     * a valid alternative would be to store the array of knobs as an
     * instance variable of the Shape and and update the knobs as the bounds
     * change. This means a little more memory overhead for each Shape
     * (since it is always storing the knobs, even when not being used) and
     * having that redundant data opens up the possibility of bugs from
     * getting out of synch (bounds move but knobs didn't, etc.) but you may
     * find that a more appealing way to go. Either way is fine with us.
     * Note this method provides a nice unified place for one override from
     * a shape subclass to substitute fewer or different knobs.
     protected Rectangle[] getKnobRects(){
               System.out.println("knobs gotten");
          Rectangle[] knobs = new Rectangle[4];
          knobs[NW] = new Rectangle(bounds.x - KNOB_SIZE/2,
                         bounds.y - KNOB_SIZE/2, KNOB_SIZE, KNOB_SIZE);
          knobs[SW] = new Rectangle(bounds.x - KNOB_SIZE/2,
                         bounds.y + bounds.height - KNOB_SIZE/2,
                         KNOB_SIZE, KNOB_SIZE);
          knobs[SE] = new Rectangle(bounds.x + bounds.width - KNOB_SIZE/2,
                         bounds.y + bounds.height - KNOB_SIZE/2,
                         KNOB_SIZE, KNOB_SIZE);
          knobs[NE] = new Rectangle(bounds.x + bounds.width - KNOB_SIZE/2,
                         bounds.y - KNOB_SIZE/2,
                         KNOB_SIZE, KNOB_SIZE);
          return knobs;
     /** Helper method to determine if a point is within one of the resize
     * corner knobs. If not selected, we have no resize knobs, so it can't
     * have been a click on one. Otherwise, we calculate the knob rects and
     * then check whether the point falls in one of them. The return value
     * is one of NW, NE, SW, SE constants depending on which knob is found,
     * or NONE if the click doesn't fall within any knob.
     protected int getKnobContainingPoint(Point pt){
               System.out.println("resize knobs");
          // if we aren't selected, the knobs
          // aren't showing and thus there are no knobs to check
          if (!isSelected) return NONE;
          Rectangle[] knobs = getKnobRects();
          for (int i = 0; i < knobs.length; i++)
          if (knobs[i].contains(pt))
               return i;
          return NONE;
     /** Method used by DrawingCanvas to determine if a mouse click is starting
     * a resize event. In order for it to be a resize, the click must have
     * been within one of the knob rects (checked by the helper method
     * getKnobContainingPoint) and if so, we return the "anchor" ie the knob
     * opposite this corner that will remain fixed as the user drags the
     * resizing knob of the other corner around. During the drag actions of a
     * resize, that fixed anchor point and the current mouse point will be
     * passed to the resize method, which will reset the bounds in response
     * to the movement. If the mouseLocation wasn't a click in a knob and
     * thus not the beginning of a resize event, null is returned.
public Point getAnchorForResize(Point mouseLocation){
          System.out.println("is it a resize?");
int whichKnob = getKnobContainingPoint(mouseLocation);
if (whichKnob == NONE) // no resize knob is at this location
return null;
Rectangle[] knobs = getKnobRects();
whichKnob = Math.abs(whichKnob - (int)(knobs.length / 2));
return (new Point(knobs[whichKnob].x + knobs[whichKnob].width /2,
knobs[whichKnob].y + knobs[whichKnob].height/2));
public abstract void draw(Graphics g, Rectangle regionToDraw);

line left at the end. How can I correct this?java.awt.Polygon (or Polygon2D)
Here are a few of my thoughts
#1 There is a Shape interface in core java already, as well as plenty of very useful shapes (Rectangle, Ellipse2D, Area). Shape has some really nice features like contains(...) and intersects(...). By creating a separate class for your Shape objects, you ensure that the two will be incompatible.
#2 As tempting as it is, it is a bad idea to include a Color with a shape. What if you want it to have more than one Color? What if you want the insides of the shape to be filled by an Image? I just created and posted a class on the java forums called Renderable, which combines a java.awt.Shape with a java.awt.Paint.
#3 Below is my PaintArea class. It "scribbles" on an Image. Maybe this will give you some ideas. To compile it, you will either have to find my MathUtils class (which I've posted here before) or reimplement the distance and angle methods. There is also a reference to WIndowUtilities... find that or remove it and put the PaintArea in a Frame and do setVisible(true)
You are welcome to use and modify this code, but please don't change the package and please make sure that you add attribution if you submit this in an academic setting.
* Created on Jun 15, 2005 by @author Tom Jacobs
package tjacobs.ui.ex;
import java.awt.image.BufferedImage;
import java.awt.*;
import java.awt.event.*;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import tjacobs.MathUtils;
import tjacobs.ui.util.WindowUtilities;
* PaintArea is a component that you can draw in similar to but
* much simpler than the windows paint program.
public class PaintArea extends JComponent {
     private static final long serialVersionUID = 0;
     BufferedImage mImg; //= new BufferedImage();
     int mBrushSize = 1;
     private boolean mSizeChanged = false;
     private Color mColor1, mColor2;
     static class PaintIcon extends ImageIcon {
          public static final long serialVersionUID = 0;
          int mSize;
          public PaintIcon(Image im, int size) {
               super(im);
               mSize = size;
     public PaintArea() {
          super();
          setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));
          addComponentListener(new CListener());
          MListener ml = new MListener();
          addMouseListener(ml);
          addMouseMotionListener(ml);
          setBackground(Color.WHITE);
          setForeground(Color.BLACK);
     public void paintComponent(Graphics g) {
          if (mSizeChanged) {
               handleResize();
          //g.drawImage(mImg, mImg.getWidth(), mImg.getHeight(), null);
          g.drawImage(mImg, 0, 0, null);
          //super.paintComponent(g);
          //System.out.println("Image = " + mImg);
          //System.out.println("Size: " + mImg.getWidth() + "," + mImg.getHeight());
     public void setBackground(Color c) {
          super.setBackground(c);
          if (mImg != null) {
               Graphics g = mImg.getGraphics();
               g.setColor(c);
               g.fillRect(0, 0, mImg.getWidth(), mImg.getHeight());
               g.dispose();
     public void setColor1(Color c) {
          mColor1 = c;
     public void setColor2(Color c) {
          mColor2 = c;
     public Color getColor1() {
          return mColor1;
     public Color getColor2() {
          return mColor2;
     class ToolBar extends JToolBar {
          private static final long serialVersionUID = 1L;
          ToolBar() {
               final ColorButton fore = new ColorButton();
               fore.setToolTipText("Foreground Color");
               final ColorButton back = new ColorButton();
               back.setToolTipText("Background Color");
               JComboBox brushSize = new JComboBox();
               //super.createImage(1, 1).;
               FontMetrics fm = new FontMetrics(getFont()) {
                    private static final long serialVersionUID = 1L;};
               //int ht = fm.getHeight();
               int useheight = fm.getHeight() % 2 == 0 ? fm.getHeight() + 1 : fm.getHeight();
               final BufferedImage im1 = new BufferedImage(useheight, useheight, BufferedImage.TYPE_INT_RGB);
               Graphics g = im1.getGraphics();
               g.setColor(Color.WHITE);
               g.fillRect(0, 0, useheight, useheight);
               g.setColor(Color.BLACK);
               g.fillOval(useheight / 2, useheight / 2, 1, 1);
               g.dispose();
               //im1.setRGB(useheight / 2 + 1, useheight / 2 + 1, 0xFFFFFF);
               final BufferedImage im2 = new BufferedImage(useheight, useheight, BufferedImage.TYPE_INT_RGB);
               g = im2.getGraphics();
               g.setColor(Color.WHITE);
               g.fillRect(0, 0, useheight, useheight);
               g.setColor(Color.BLACK);
               g.fillOval(useheight / 2 - 1, useheight / 2 - 1, 3, 3);
               g.dispose();
//               im2.setRGB(useheight / 2 - 1, useheight / 2 - 1, 3, 3, new int[] {     0, 0xFFFFFF, 0,
//                                                            0xFFFFFF, 0xFFFFFFF, 0xFFFFFF,
//                                                            0, 0xFFFFFF, 0}, 0, 1);
               final BufferedImage im3 = new BufferedImage(useheight, useheight, BufferedImage.TYPE_INT_RGB);
               g = im3.getGraphics();
               g.setColor(Color.WHITE);
               g.fillRect(0, 0, useheight, useheight);
               g.setColor(Color.BLACK);
               g.fillOval(useheight / 2 - 2, useheight / 2 - 2, 5, 5);
               g.dispose();
//               im3.setRGB(useheight / 2 - 2, useheight / 2 - 2, 5, 5, new int[] {     0, 0, 0xFFFFFF, 0, 0, 
//                                                            0, 0xFFFFFF, 0xFFFFFFF, 0xFFFFFF, 0,
//                                                            0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF, 0xFFFFFF,
//                                                            0, 0xFFFFFF, 0xFFFFFFF, 0xFFFFFF, 0,
//                                                            0, 0, 0xFFFFFF, 0, 0}, 0, 1);
               //JLabel l1 = new JLabel("1 pt", new ImageIcon(im1), JLabel.LEFT);
               //JLabel l2 = new JLabel("3 pt", new ImageIcon(im2), JLabel.LEFT);
               //JLabel l3 = new JLabel("5 pt", new ImageIcon(im3), JLabel.LEFT);
               brushSize.addItem(new PaintIcon(im1, 1));
               brushSize.addItem(new PaintIcon(im2, 3));
               brushSize.addItem(new PaintIcon(im3, 5));
               //brushSize.addItem("Other");
               add(fore);
               add(back);
               add(brushSize);
               PropertyChangeListener pl = new PropertyChangeListener() {
                    public void propertyChange(PropertyChangeEvent ev) {
                         Object src = ev.getSource();
                         if (src != fore && src != back) {
                              return;
                         Color c = (Color) ev.getNewValue();
                         if (ev.getSource() == fore) {
                              mColor1 = c;
                         else {
                              mColor2 = c;
               fore.addPropertyChangeListener("Color", pl);
               back.addPropertyChangeListener("Color", pl);
               fore.changeColor(Color.BLACK);
               back.changeColor(Color.WHITE);
               brushSize.addItemListener(new ItemListener() {
                    public void itemStateChanged(ItemEvent ev) {
                         System.out.println("ItemEvent");
                         if (ev.getID() == ItemEvent.DESELECTED) {
                              return;
                         System.out.println("Selected");
                         Object o = ev.getItem();
                         mBrushSize = ((PaintIcon) o).mSize;
               //Graphics g = im1.getGraphics();
               //g.fillOval(0, 0, 1, 1);
               //BufferedImage im1 = new BufferedImage();
               //BufferedImage im1 = new BufferedImage();
     protected class MListener extends MouseAdapter implements MouseMotionListener {
          Point mLastPoint;
          public void mouseDragged(MouseEvent me) {
               Graphics g = mImg.getGraphics();
               if ((me.getModifiers() & InputEvent.BUTTON1_MASK) != 0) {
                    g.setColor(mColor1);
               } else {
                    g.setColor(mColor2);
               Point p = me.getPoint();
               if (mLastPoint == null) {
                    g.fillOval(p.x - mBrushSize / 2, p.y - mBrushSize / 2, mBrushSize, mBrushSize);
                    //g.drawLine(p.x, p.y, p.x, p.y);
               else {
                    g.drawLine(mLastPoint.x, mLastPoint.y, p.x, p.y);
                    //g.fillOval(p.x - mBrushSize / 2, p.y - mBrushSize / 2, mBrushSize, mBrushSize);
                    double angle = MathUtils.angle(mLastPoint, p);
                    if (angle < 0) {
                         angle += 2 * Math.PI;
                    @SuppressWarnings("unused")
                    double distance = MathUtils.distance(mLastPoint, p) * 1.5;
                    if (angle < Math.PI / 4 || angle > 7 * Math.PI / 4 || Math.abs(Math.PI - angle) < Math.PI / 4) {
                         for (int i = 0; i < mBrushSize / 2; i ++) {
                              g.drawLine(mLastPoint.x, mLastPoint.y + i, p.x, p.y + i);
                              g.drawLine(mLastPoint.x, mLastPoint.y - i, p.x, p.y - i);
//                              System.out.println("y");
//                              System.out.println("angle = " + angle / Math.PI * 180);
                    else {
                         for (int i = 0; i < mBrushSize / 2; i ++) {
                              g.drawLine(mLastPoint.x + i, mLastPoint.y, p.x + i, p.y);
                              g.drawLine(mLastPoint.x  - i, mLastPoint.y, p.x - i, p.y);
//                              System.out.println("x");
//                    System.out.println("new = " + PaintUtils.printPoint(p));
//                    System.out.println("last = " + PaintUtils.printPoint(mLastPoint));
                    //System.out.println("distance = " + distance);
                    //Graphics2D g2 = (Graphics2D) g;
                    //g2.translate(mLastPoint.x + mBrushSize / 2, mLastPoint.y);
                    //g2.rotate(angle);
                    //g2.fillRect(0, 0, (int) Math.ceil(distance), mBrushSize);
                    //g2.rotate(-angle);
                    //g2.translate(-mLastPoint.x + mBrushSize / 2, -mLastPoint.y);
//                    g.setColor(Color.RED);
//                    g.drawRect(p.x, p.y, 1, 1);
               mLastPoint = p;
               g.dispose();
               repaint();
          public void mouseMoved(MouseEvent me) {}
          public void mouseReleased(MouseEvent me) {
               mLastPoint = null;
     private void handleResize() {
          Dimension size = getSize();
          mSizeChanged = false;
          if (mImg == null) {
               mImg = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
               Graphics g = mImg.getGraphics();
               g.setColor(getBackground());
               g.fillRect(0, 0, mImg.getWidth(), mImg.getHeight());
               g.dispose();
          else {
               int newWidth = Math.max(mImg.getWidth(),getWidth());
               int newHeight = Math.max(mImg.getHeight(),getHeight());
               if (newHeight == mImg.getHeight() && newWidth == mImg.getWidth()) {
                    return;
               BufferedImage bi2 = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
               Graphics g = bi2.getGraphics();
               g.setColor(getBackground());
               g.fillRect(0, 0, bi2.getWidth(), bi2.getHeight());
               g.drawImage(mImg, mImg.getWidth(), mImg.getHeight(), null);
               g.dispose();
               mImg = bi2;
     public JToolBar getToolBar() {
          if (mToolBar == null) {
               mToolBar = new ToolBar();
          return mToolBar;
     private ToolBar mToolBar;
     public static void main (String args[]) {
          PaintArea pa = new PaintArea();
          JPanel parent = new JPanel();
          parent.setLayout(new BorderLayout());
          parent.add(pa, BorderLayout.CENTER);
          pa.setPreferredSize(new Dimension(150, 150));
          parent.add(pa.getToolBar(), BorderLayout.NORTH);
          WindowUtilities.visualize(parent);
     protected class CListener extends ComponentAdapter {
          public void componentResized(ComponentEvent ce) {
               mSizeChanged = true;
}

Similar Messages

  • How can I add to an existing path using the pencil tool?

    This probably seems like a rather elementary question, but
    whenever I draw a path using the pencil tool, reselect it,
    hover over the endpoint, and the click and drag to extend
    the line off into a different direction, Illustrator will often
    (but not always) erase the existing path and leave only the
    new one that I drew.
    To wit:
    In step 1 above, I draw a line with the Pencil tool.
    In step 2 above, I reselect the line from step 1, hover over the endpoint, and then continue to draw further.
    However, as can be seen in step 3, the line from step 1 disappears after I draw the new path.
    I am aware of the pencil setting, "Edit selected paths", and I have checked it to edit selected paths
    within 12 pixels for the above example. What I am doing in the above example, and what I
    want to do, is to be able to add more paths onto an existing one using the pencil tool,
    rather than have a completely new path being drawn every time I lift up my pen to finish
    drawing the previous path.
    I also realize that I can do this with the pen tool; but the pen tool is a more
    precise tool (and somewhat more cumbersome), and I prefer to have more
    of the rough-handed look from time to time.
    Finally, I also know that I can use the direct selection tool to select endpoints
    from two different paths and then join them using the join command;
    but this seems to be more trouble than it's worth in many cases, especially
    if I want to do it frequently for a more long and complicated line.
    Am I expecting too much out of Illustrator?
    Is my idea of how to use the existing tools wrong in this case?
    Is there some piece of knowledge I'm missing?
    I'm on Illustrator CS5, Mac OS X 10.6.8, using a Wacom Intuos4 tablet.
    However, I have confirmed the above on Illustrator CS4 for Mac as well.
    Any help or comments would be much appreciated.
    Jeff

    Thanks @rcraighead - the Live Paint process seems a bit overkill for simply adding
    a new path onto an existing pencil path, but I did try the first idea you suggested,
    which was tracing a bit over the last part of the existing path and then continuing
    on to extend the path. It's a bit imprecise because the existing path gets slightly
    modified, but it seems to work pretty well all in all. Nice idea indeed - thanks a million.
    I also found that in AI CS5, I can use the selection tool to select all of the paths
    in this case and then join them using the join command. I thought I needed to
    select individual anchor points for this to work, but it actually works really
    well, better than I thought. I seem to recall that previous versions of Illustrator
    were a lot more picky with the Join command, but then again this might just
    have been my lack of understanding.
    I'm curious to know what other solutions to the above problem that other users
    might have, so I will leave this question unanswered for a bit...
    but I will use your initial technique described - it seems to work
    pretty well, in absence of other options Many thanks again for your timely help.
    Jeff

  • Line drawn with Pencil Tool appears to fade in and out

    My Nme is Allen Togwell.Case No: 0183721415. Your chat line guy said I needed a graphic card to solve my problem for my CS6. He gave me a link but disconnected before I could use it. Can you help me with what type of graphic card I need. I am 75 yrs of age and not very com literate.
    Thanks

    Hi Allen,
    I looked up that case number and watched a recording of you working with the agent and am not convinced that what you are seeing was necessarily because of the graphics card.
    This is my interpretation and thoughts around what you were seeing. I noticed that you were working on an image that took up a fair amount of the screen when viewed at 16.7% zoom. This means it was a pretty large image. Next, I noticed you were using the pencil tool with a tip that was 4 pixels.
    I think the combination of these two things was the reason the pencil tool was appearing choppy or to fade in and out when drawing. This occurs because you are using such a small size and are zoomed out so much that the lines are barely visible. When you zoom out the program resamples the appearance. This resampling can cause detail to be lost and the appearance to vary depending on what zoom level is used, 16.7% is particularly bad with fine details.
    I think there would be two solutions, use a different zoom level to get a better view or use a pencil with a larger size.
    I recorded this video for you as an example
    http://screencast.com/t/e9dhiHKoKbv
    I suspect the list that the agent was suggesting for video cards was the one at the bottom of this document
    http://helpx.adobe.com/photoshop/kb/photoshop-cs6-gpu-faq.html
    Hope that helps,
    -Dave

  • Coloring issues with magic wand tool and paint bucket tool, leaves uncolored areas near drawn lines

    Photoshop CS6 doesn't color properly.  Whetever I use brush tool or elliptical marquee tool to do the lines (with brush tool I use Hard Round, not soft), it doesn't color the whole area when i fill them with color. This happens with both magic wand tool AND paint bucket tool, there is always a small uncolored area near the lines. I have tolerance on 30,  and anti-alias, contiguous and sample all layers boxes checked. (this setting worked on my old CS3) I have tried tolerance from 0 to 100, no difference. I have also tried unchecking the boxes I just mentioned, still no difference. I hope there is a solution for this, because it is tedious to always go to the Select - Modify - Expand every time I need to color some area. So how do I fix this problem? I use seperate layers for lines and colors, like I have always done with other Photoshop versions. Even in school where they have CS5 those normal settings work.

    Hello Chris,
    I don't think this is a "user error". I think Adobe should be able to program a state of the art paint bucket, which is capable to get this done right.
    Other applications are able to get this done right.
    Please don't fall into a programmer's ignorance ("this is done right by definition") but listen to us artists and improve this unintuitive behavior. Add something like "ignore transparent pixels", because this doesn't even work if you draw on an empty layer.
    Thank you!

  • How do I constrain the Pencil Tool

    I am using Illustrator CS 5 on a Mac Pro using Lion OS X. I am an intermediate user having had to move over from Freehand. I just started using the Pencil tool today but can't figure out how to activate the modifier keys to work with the Pencil tool. They work with all the other tools like shapes and the pen tool, just not with Pencil.
    I did a web search and found several threads about similar problems that seemed to be concerned with the modifier keys not working with ALL command. Suggestions included turning off Foxfire, Outlook, Entourage, etc. with indifferent success. Also deleting the preferences files. But I only have a problem with one command. I have found tutorials that indicate using the modifier keys with Pencil so I know it is supposed to work. Is there a solution? I don't know a lot about this so please be explicit in any replys. I am not an IT expert and didn't follow the jargon in most of the posts I found.
    Sign me Confused and Frustrated.

    These are all interesting, if confusing, suggestions, thanks. Maybe I need to clarify what I am trying to do. This first image is of a plan I drew in AutoCADD LT. In full AutoCADD there is a Sketch, or Jitter command that gives
    you options to make the lines look like they are draw with pencil, or chalk, or markers. I don't have those controls on my version of the program. So, I was hoping to be able to use Illustrator to convert, nor redraw, the existing lines and curves to look hand drawn. In drafting one uses rulers and Tsquares to keep lines straight, but they often overlap at the ends. The overall effect I wanted was more casual, less rigid, but still drawn using drafting tools.
    The second drawing is one I imported as a pdf into Photoshop. Using the brush tool, and the Shift key, I traced over the lines to create the look I wanted. It works, but took several hours to do multiple plans. I was hoping to find a simple filter or command that would take the exisitng lines and apply the effect of the sketchy, hand drawn look without having to redraw everything.

  • What happened to the pencil tool?

    Just wondering what happened to the pencil tool because using it garageband would allow me to play through programs like amplitube or guitar rig and record with the effects. I know that garage band now has the amp modeling but I still prefer some of the other programs. Any suggestions how to work around this or did apple just leave out the feature?

    http://www.bulletsandbones.com/GB/GBFAQ.html#addeffect09
    http://www.bulletsandbones.com/GB/GBFAQ.html#changeeffectsparameters

  • Jittery lines when drawing with pencil tool in Flash

    When drawing with the pencil tool using an Intuos Wacom tablet, the lines are jagged and create several points along the jagged line, making the pencil tool unusable. Does not occur with any other program. Using Flash CC Pro 2014.

    Hi Jessy,
    Can you please provide the following details to understand the issue .
    What is mode of pencil you have set to draw like straihgten ,Smooth or Ink ,and if it smooth mode what is the smothing value you have set .
    Wacom driver version.
    do you see this problem in any previous version of Flash.
    Thanks!
    Latha

  • Can't get pencil tool into merge drawing mode

    I have downloaded the trial version of Adobe Executive Suite CS5. In the Flash Professional CS5 program I am trying to do a drawing with the pencil tool.  In the old version of Flash that I have (4.0) if I draw two lines that overlap, I can delete the line past the point where they cross.  In this version I can't do that.  It treats each line I draw as a separate item and won't combine them.  I notice the properties panel says I am in Object mode which would be the reason.  However I can't get it to go to merge mode, which is supposed to be the default.
    Is this because it's the trial version and not all features work in that version?  Or could there be some other reason?
    Thanks for any help anyone can offer.  My email address is [email protected] and I can be phoned at 541 782-5904 (Oregon).
    Ron Coleman

    Thank you.  I tried what you said and the button simply didn't respond.  However I was using the line tool or the pencil tool when I did this. I later tried using the rectangle tool and then it worked.  Once I got it switched back it stayed that way.  I appreciate your emailing me, it's so hard to get answers to problems with Adobe.  I had the old Flash program by Macromedia and I honestly believe it is easier to use than the new one.  But maybe that won't be so once I've spent more time with it.
    Thanks again.
    Ron Coleman

  • Edit Audio with pencil tool not working LP8

    I am using Logic Pro 8.0.2. I am trying to edit an audio track in the "sample editor" window to remove a couple of clicks.
    -I am highlighting an audio track, and then opening the sample editor
    -When I get to the spot that I want to edit - I am dragging the pointer tool over that area to select it
    - I am selecting the pencil tool in the sample editor window. When I go over the area that I want to work on and click the mouse, the magnifier turns on instead
    Thanks in advance for any input and a response...

    Hi there Jim,
    Cant see where to start a new post so....
    I'm running Logic8 on my 3.02 imac xtreme with Waves Mercury plugins with 4gig ram 10.5.5 and I'm trying to node a mac mini 10.4.11.
    I'm getting the sync pending dull green on node enable tracks but NO actual node precessing at all
    I've tried every conceivable comdination of plugins on trax Waves Non waves a mixture but still NO offload at all
    Any ideas??
    Many thanks
    JUlian

  • How can you fix transparency less than 100% when drawing multiple shapes with the pencil tool?

    I draw a (fill only) shape at 50% with the pencil tool and when I go to draw another, the transparency jumps back to 100%. I would like it to stay at 50% for every mark I make, anyone know how? I wish to build up multiple semi-translucent vector shapes like in the attached image.
    Many Thanks.
    Mark

    In the bottom of the Appearance Palette, toggle the (deep breath) New Art Maintains Appearance / New Art Has Basic Appearance button (pant pant).
    I leave it to you to do three things:
    1. Figure out which state of that stupidly-designed single button means which setting.
    2. Figure out if the stupidly-designed tooltip that appears when you hover over that stupid button means:
    A. ...that what the tooltip reads is the current setting, or...
    B. ...that what the tooltip reads is the setting you will get if you click the stupidly-designed single button.
    3. Remember what you figured out the next time you need to visit that stupidly-designed button.
    Adobe doesn't understand this is a simple yes/no decision, and that a far more intuitive simple labeled checkbox will do.
    JET

  • How do I change the pencil tool to smooth or ink in CC?

    In most other versions of flash that I'm aware of, you could change the settings on the pencil tool to smooth or ink, rather than straighten, which straightens out all of your lines and puts in fun corners and makes shapes into rectangles for you.
    In CC though, I couldn't find where to change this?
    Can you even do this, and if so, how?

    These options are available in Flash CC as well. If you can't see them at the bottom of your tools panel, they might be getting cut due to a smaller screen size. Try expanding the tools panel to double column or just undock it and check again.
    Let me know if you still can't find them.
    -Nipun

  • Error loading plugins brs pencil tool | cc | Illustrator 2014

    Hello there,
    I use Illustrator cc 2014, and recently when I open the application, there will be a pop up with "error loading plugins brs pencil tool". I click continue, and the pencil tool is completely missing from my tool bar. I wanted to know what would be the best way to fix this? I have tried updating the software and it says "failed to update, error u44m1p7". I don't want to mess around with any of the plugins manually as I know there has to be a certain way they are placed and installed, and I'm not sure what the right way is. If someone has had to remove and add a plugin before and knows how that info would be helpful.
    Thanks for any help,
    -Laura

    Laura,
    You may consider a reinstallation using the full three step way (otherwise strange things may linger):
    Uninstall (ticking the box to delete the preferences), run the Cleaner Tool, and reinstall.
    http://www.adobe.com/support/contact/cscleanertool.html

  • Brush and Pencil tool not working in Photoshop CS5 trial

    I dowloaded the Photoshop CS5 trial yesterday 2 days ago. Everything worked perfectly yesterday. Unfortunately, today...the brush and pencil tool doesn't work. Anyone have any idea why?

    We need a few more details like what doesn't work
    with the brush or pencil tools.
    Provide a screenshot if you feel that would help illustrate the problem.
    MTSTUNER

  • The pencil tool is not working correctly

    I've been making my drawing with the pencil tool obviously. After I make a stroke, I continue it with the last anchor point. But sometimes when I do that, the previous stroke disappears completley. Why is that?

    That's because Illustrator has got a pretty lame understanding about what should happen when you continue a path in certain angles while the Modify selected paths option is turned on inside the Pencil Tool options.
    You can disable that option but I can imagine that this is not what you're really looking for.

  • Scripting shortcut for pencil tool in Acrobat 9 Pro?

    Many of the tools in Acrobat 9 Pro have a keyboard shortcut (P=callout box, U=highlight, Z=marquee zoom...) but not the pencil tool. Anyone scripted a shortcut key or be willing to explain the process of writing a script and assigning it to a keystroke?
    Why would Adobe overlook this tool?
    And yes, I know AutoInk sells a plug-in for $69.

    Acrobat : Advanced menu : Preflight…
    Then:

Maybe you are looking for

  • Error reading material cost estimate for sales order (KE292)

    Dear All, I have an issue with billing. we are posting july month transactions, the material cost is maintained through MR21. When releasing billing document for accounting we are getting error message like"Error reading the material cost estimate fo

  • Firefox 3 and Quicktime Plug-in

    Okay, so I have Quicktime 7.5.5 installed, and have firefox set to use that plugin. I can play quicktime movies from places such as gametrailers.com But I CAN'T play the movies on apples own website? I browse to a page such as the new iPod advert (ht

  • Web-site as iframe in webdynpro for abap

    Hello, we want to integrate an external website like google maps as iframe in webdynpro for abap-window. Is it  possible? Regards Oliver Edited by: Oliver Prodinger on Apr 18, 2010 11:41 AM

  • Terrible reading experience...

    I downloaded the AIR app on my Macintosh to read monographs made available by my university library. The resulting pages are one-third-filled with a single page-wide column of tiny text - text that occasionally overlaps with itself. So far as I can d

  • ESSO Reporting

    Hi all, Someone has implemented ESSO-Reporting? I have installed ESSO 11.1.1.1.0 (LM,PR,Reporting). In the Reporting database I can see the LM events, but SSOUserId field was not populated, however i found it's a bug; What's the correct format for th