İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Zafer Teker
tekzaf@yahoo.com

Sadece Çizgi Çizen Çizim Programı

Bu örnekte fare kullanarak ekrana düz çizgiler ile çizim yapabiliyoruz.

Üç class bulnmakta. drawApp Application class'ıdır. DrawCanvas cnavas class'ıdır ve çizgilerin saklandığı ve çizildiği class'tır. Line ise bir çizgi için bilgileri tutan class'tır.

DrawApp.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.drawer;
  2 import javax.swing.*;
  3 import java.awt.*;
  4 public class DrawApp extends JFrame{
  5   DrawApp(){
  6     setBounds(10,10,300,300);
  7     DrawCanvas canvas=new DrawCanvas();
  8     getContentPane().setLayout(new BorderLayout());
  9     getContentPane().add(canvas,BorderLayout.CENTER);
 10     setVisible(true);
 11   }
 12   public static void main(String[] args) {
 13     new DrawApp();
 14   }
 15 }

DrawCanvas.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.drawer;
  2 import java.awt.*;
  3 import java.awt.event.*;
  4 import java.util.*;
  5 /**
  6  * Çizimin yapıldığı class
  7  * Tüm çizgileri lines vector'unde tutar.
  8  * CanvasMouseAdapter ve CanvasMouseMotionAdapter ile fare olaylarını tutar.
  9  * pressedX,pressedY en son basılan noktayı tutar.
 10  * drawingLine ise şu anda çizim yapılan line'ı tutar. drag edildiği sürece boyu değiştirilir.
 11  */
 12 public class DrawCanvas extends Canvas{
 13   private Vector lines=new Vector();
 14   private int pressedX,pressedY;
 15   private Line drawingLine=null;
 16   public DrawCanvas(){
 17     setBackground(Color.WHITE);
 18     addMouseListener(new CanvasMouseAdapter());
 19     addMouseMotionListener(new CanvasMouseMotionAdapter());
 20   }
 21   public void paint(Graphics g){
 22     for(int i=0;i<lines.size();i++){
 23       Line line=(Line)lines.get(i);
 24       line.draw(g);
 25     }
 26   }
 27   class CanvasMouseAdapter extends MouseAdapter{
 28     public void mousePressed(MouseEvent e){
 29       pressedX=e.getX();
 30       pressedY=e.getY();
 31     }
 32     public void mouseReleased(MouseEvent e){
 33       drawingLine=null;
 34     }
 35   }
 36   class CanvasMouseMotionAdapter extends MouseMotionAdapter{
 37     public void mouseDragged(MouseEvent e){
 38       int x=e.getX();
 39       int y=e.getY();
 40       if(drawingLine==null){
 41         drawingLine=new Line(pressedX,pressedY,x,y);
 42         lines.add(drawingLine);
 43       }else{
 44         drawingLine.change(x,y);
 45       }
 46       repaint();
 47     }
 48   }
 49 }

Line.javaİndir Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.drawer;
  2 import java.awt.*;
  3 /**
  4  * Bir başlangıç ve bir bitiş noktasını tutan class.
  5  * change method ile ikinci nokta değiştirilebiliyor.
  6  * draw method'u ile verilen bir Graphics method'una kendisini çizebiliyor.
  7  */
  8 public class Line {
  9   private Point p1,p2;
 10   public Line(int x1,int y1,int x2,int y2){
 11     this(new Point(x1,y1),new Point(x2,y2));
 12   }
 13   public Line(Point p1,Point p2){
 14     this.p1=p1;
 15     this.p2=p2;
 16   }
 17   public int getX1(){
 18     return (int)p1.getX();
 19   }
 20   public int getY1(){
 21     return (int)p1.getY();
 22   }
 23   public int getX2(){
 24     return (int)p2.getX();
 25   }
 26   public int getY2(){
 27     return (int)p2.getY();
 28   }
 29   public void change(int x2,int y2){
 30     p2.move(x2,y2);
 31   }
 32   public void draw(Graphics g){
 33     g.drawLine(getX1(),getY1(),getX2(),getY2());
 34   }
 35 }

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır