青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

coreBugZJ

此 blog 已棄。

畫板 Java實現

也是剛剛從郵箱里發現的古董。。。



我的代碼:

  1 // ubuntu  windows endl
  2 
  3 import java.awt.*;
  4 import java.awt.event.*;
  5 import java.awt.image.*;
  6 import java.io.*;
  7 import javax.swing.*;
  8 import javax.imageio.*;
  9 
 10 class PainterCanvas extends Canvas {
 11 
 12         public PainterCanvas( Color foregroundColor, int initPaintType, float lineWidth, float [] dashArray, float dashPhase, Dimension size ) {
 13                 setColor( foregroundColor );
 14                 setBackground( COLOR_BACK );
 15                 paintType = LINE;
 16                 setPaintType( initPaintType );
 17                 paintStroke = new BasicStroke();
 18                 setLineWidth( lineWidth );
 19                 setLineDash( dashArray, dashPhase );
 20                 setBufferedDimension( size );
 21                 startX = startY = endX = endY = 0;
 22                 drawBuffer = false;
 23                 pressed = false
 24                 setCursor( Cursor.getPredefinedCursor( Cursor.CROSSHAIR_CURSOR ) );
 25                 addMouseListener( new 
 26                         MouseAdapter() {
 27                                 public void mousePressed( MouseEvent me ) {
 28                                         if ( ! pressed ) {
 29                                                 startX  = me.getX();
 30                                                 startY  = me.getY();
 31                                                 pressed = true;
 32                                         }
 33                                 }
 34                                 public void mouseReleased( MouseEvent me ) {
 35                                         if ( pressed ) {
 36                                                 endX = me.getX();
 37                                                 endY = me.getY();
 38                                                 pressed = false;
 39                                                 drawBuffer = true;
 40                                                 repaint();
 41                                         }
 42                                 }
 43                         }
 44                 );
 45                 addMouseMotionListener( new MouseMotionAdapter() {
 46                         public void mouseDragged( MouseEvent me ) {
 47                                 endX = me.getX();
 48                                 endY = me.getY();
 49                                 repaint();
 50                         }
 51                 } );
 52         }
 53 
 54         public void setPaintType( int t ) {
 55                 if ( ( t == LINE )  || ( t == TRIA ) || ( t == OVAL ) || ( t == RECT ) ) {
 56                         paintType = t;
 57                 }
 58         }
 59 
 60         public void setColor( Color col ) {
 61                 colorFore = col;
 62         }
 63 
 64         public void setLineWidth( float lineWidth ) {
 65                 if ( lineWidth > 0.0f ) {
 66                         paintStroke = new BasicStroke( lineWidth, paintStroke.getEndCap(), 
 67                                                         paintStroke.getLineJoin(), paintStroke.getMiterLimit(), 
 68                                                         paintStroke.getDashArray(), paintStroke.getDashPhase() );
 69                 }
 70         }
 71 
 72         public void setLineDash( float [] dashArray, float dashPhase ) {
 73                 paintStroke = new BasicStroke( paintStroke.getLineWidth(), paintStroke.getEndCap(), 
 74                                                 paintStroke.getLineJoin(), paintStroke.getMiterLimit(), 
 75                                                 dashArray, dashPhase );
 76         }
 77 
 78         public void setBufferedDimension( Dimension size ) {
 79                 setSize( size );
 80                 dimSize = size;
 81                 img     = new BufferedImage( dimSize.width, dimSize.height, BufferedImage.TYPE_4BYTE_ABGR );
 82                 graImg  = img.createGraphics();
 83                 graImg.setColor( COLOR_BACK );
 84                 graImg.fillRect( 00, dimSize.width, dimSize.height );
 85         }
 86 
 87         public void setBufferedImage( BufferedImage bufImg ) {
 88                 dimSize.width  = bufImg.getWidth();
 89                 dimSize.height = bufImg.getHeight();
 90                 setSize( dimSize );
 91                 img    = bufImg;
 92                 graImg = img.createGraphics();
 93         }
 94 
 95         public Color getColor() {
 96                 return colorFore;
 97         }
 98 
 99         public BufferedImage getBufferedImage() {
100                 return img;
101         }
102 
103         public void paint( Graphics g ) {
104                 g.drawImage( img, 00, dimSize.width, dimSize.height, this );
105                 paintUpdate( g );
106         }
107         
108         public void update( Graphics g ) {
109                 g.drawImage( img, 00, dimSize.width, dimSize.height, this );
110                 paintUpdate( g );
111         }
112 
113         public void paintUpdate( Graphics gra ) {
114                 Graphics2D g = (Graphics2D)gra;
115                 g.setColor( colorFore );
116                 g.setStroke( paintStroke );
117                 graImg.setColor( colorFore );
118                 graImg.setStroke( paintStroke );
119                 int x = Math.min( startX, endX );
120                 int y = Math.min( startY, endY );
121                 int w = startX + endX - x - x;
122                 int h = startY + endY - y - y;
123                 switch ( paintType ) {
124                         case LINE :
125                                 g.drawLine( startX, startY, endX, endY );
126                                 if ( drawBuffer ) {
127                                         graImg.drawLine( startX, startY, endX, endY );
128                                 }
129                                 break;
130                         case TRIA :
131                                 g.drawPolygon( new int[]{ startX, x, endX }, new int[]{ startY, ( startY + endY ) / 2, endY }, 3 );
132                                 if ( drawBuffer ) {
133                                         graImg.drawPolygon( new int[]{ startX, x, endX }, new int[]{ startY, ( startY + endY ) / 2, endY }, 3 );
134                                 }
135                                 break;
136                         case OVAL :
137                                 g.drawOval( x, y, w, h );
138                                 if ( drawBuffer ) {
139                                         graImg.drawOval( x, y, w, h );
140                                 }
141                                 break;
142                         case RECT :
143                                 g.drawRect( x, y, w, h );
144                                 if ( drawBuffer ) {
145                                         graImg.drawRect( x, y, w, h );
146                                 }
147                                 break;
148                 }
149                 drawBuffer = false;
150         }
151 
152         private int             startX, startY, endX, endY, paintType;
153         private Color           colorFore;
154         private boolean         pressed, drawBuffer;
155         private BasicStroke     paintStroke;
156         private Graphics2D      graImg;
157         private BufferedImage   img;
158         private Dimension       dimSize;
159 
160         private static final Color COLOR_BACK = Color.WHITE;
161         public  static final int   LINE = 0, TRIA = 1, OVAL = 2, RECT = 3;
162 
163 }
164 
165 
166 //------------------------------------------------------------------------------------------
167 
168 
169 class PainterWin extends Frame implements ActionListener, ItemListener {
170 
171         public PainterWin() {
172                 super"畫板 --- 趙杰" );
173                 initFrame();
174                 initMenu();
175                 initTool();
176                 initCanvas();
177                 setVisible( true );
178                 validate();
179         }
180 
181         public void actionPerformed( ActionEvent ae ) {
182                 Object obj = ae.getSource();
183                 if ( obj == menuNew ) {
184                         onMenuNew();
185                 }
186                 else if ( obj == menuOpen ) {
187                         onMenuOpen();
188                 }
189                 else if ( obj == menuSave ) {
190                         onMenuSave();
191                 }
192                 else if ( obj == menuExit ) {
193                         onMenuExit();
194                 }
195                 else if ( obj == butLine ) {
196 
197                         canvas.setPaintType( PainterCanvas.LINE );
198                 }
199                 else if ( obj == butTria ) {
200                         canvas.setPaintType( PainterCanvas.TRIA );
201                 }
202                 else if ( obj == butOval ) {
203                         canvas.setPaintType( PainterCanvas.OVAL );
204                 }
205                 else if ( obj == butRect ) {
206                         canvas.setPaintType( PainterCanvas.RECT );
207                 }
208         }
209 
210         public void itemStateChanged( ItemEvent ie ) {
211                 Object obj = ie.getSource();
212                 if ( obj == choLineType ) {
213                         onChoiceLineType();
214                 }
215                 else if ( obj == choLineWidth ) {
216                         onChoiceLineWidth();
217                 }
218                 else if ( obj == choColor ) {
219                         onChoiceColor();
220                 }
221         }
222 
223         private void initFrame() {
224                 setBounds( 300200600500 );
225                 addWindowListener( new WindowAdapter() {
226                                                 public void windowClosing( WindowEvent we ) {
227                                                         onExit();
228                                                 }
229                                        }
230                 );
231                 setLayout( new BorderLayout() ); // default
232         }
233 
234         private MenuItem newMenuItem( Menu menu, String label, MenuShortcut sc ) {
235                 MenuItem item = new MenuItem( label, sc );
236                 item.addActionListener( this );
237                 menu.add( item );
238                 return item;
239         }
240 
241         private void initMenu() {
242                 MenuBar menuBar = new MenuBar();
243                 Menu    menu    = new Menu( "文件" );
244                 menuNew    = newMenuItem( menu, "新建"new MenuShortcut( KeyEvent.VK_N ) );
245                 menuOpen   = newMenuItem( menu, "打開"new MenuShortcut( KeyEvent.VK_O ) );
246                 menuSave   = newMenuItem( menu, "保存"new MenuShortcut( KeyEvent.VK_S ) );
247                 menuExit   = newMenuItem( menu, "退出"new MenuShortcut( KeyEvent.VK_E ) );
248                 menuBar.add( menu );
249                 setMenuBar( menuBar );
250         }
251 
252         private Choice newChoice( Panel pan, String label ) {
253                 Choice cho = new Choice();
254                 cho.addItemListener( this );
255                 pan.add( new Label( label ) );
256                 pan.add( cho );
257                 return cho;
258         }
259 
260         private Button newButton( Panel pan, String label ) {
261                 Button but = new Button( label );
262                 but.addActionListener( this );
263                 pan.add( but );
264                 return but;
265         }
266 
267         private void initTool() {
268                 Panel pan = new Panel();
269                 pan.setLayout( new FlowLayout( FlowLayout.CENTER, 101 ) );
270 
271                 choLineType = newChoice( pan, "線條" );
272                 choLineType.add( "實線" );
273                 choLineType.add( "虛線" );
274                 choLineType.select( 0 );
275 
276                 choLineWidth = newChoice( pan, "線寬" );
277                 choLineWidth.add( "1" );
278                 choLineWidth.add( "4" );
279                 choLineWidth.select( 0 );
280 
281                 choColor = newChoice( pan, "顏色" );
282                 choColor.add( "" );
283                 choColor.add( "" );
284                 choColor.add( "自定義" );
285                 choColor.select( 0 );
286 
287                 butLine = newButton( pan, "直線" );
288                 butTria = newButton( pan, "三角形" );
289                 butOval = newButton( pan, "" );
290                 butRect = newButton( pan, "矩形" );
291 
292                 add( pan, BorderLayout.NORTH );
293         }
294 
295         private void initCanvas() {
296                 float [] dashArray = new float[]{ 1.0f0.0f };
297                 canvas = new PainterCanvas( Color.BLACK, PainterCanvas.LINE, 1.0f, dashArray, 0.0fnew Dimension( 600400 ) );
298                 pl = new Panel( null );
299                 pl.add( canvas );
300                 canvas.setBounds( 00, canvas.getSize().width, canvas.getSize().height );
301                 pl.setBounds( 00, canvas.getSize().width, canvas.getSize().height );
302                 if ( pane != null ) {
303                         remove( pane );
304                 }
305                 pane = new JScrollPane( pl );
306                 add( pane, BorderLayout.CENTER );
307         }
308 
309         private void onMenuNew() {
310                 if ( onLeaveButCancel() ) {
311                         return;
312                 }
313                 initCanvas();
314                 validate();
315         }
316 
317         private void onMenuOpen() {
318                 if ( onLeaveButCancel() ) {
319                         return;
320                 }
321                 JFileChooser fc = new JFileChooser();
322                 int cho = fc.showOpenDialog( this );
323                 if ( cho == JFileChooser.APPROVE_OPTION ) {
324                         file = fc.getSelectedFile();
325                         BufferedImage img;
326                         try {
327                                  img = ImageIO.read( file );
328                         }
329                         catch ( IOException ex ) {
330                                 JOptionPane.showMessageDialog( this"圖像載入失敗!" );
331                                 file = null;
332                                 return;
333                         }
334                         pl.setSize( img.getWidth(), img.getHeight() );
335                         canvas.setBufferedImage( img );
336                         file = null;
337                 }
338         }
339 
340         private boolean onLeaveButCancel() {
341                 int cho = JOptionPane.showConfirmDialog( this"保存當前圖片?" );
342                 switch ( cho ) {
343                         case JOptionPane.YES_OPTION :
344                                 onSave();
345                         case JOptionPane.NO_OPTION : 
346                                 file = null;
347                                 return false;
348                 }
349                 return true;
350         }
351 
352         private void onMenuSave() {
353                 onSave();
354         }
355 
356         private void onSave() {
357                 if ( file == null ) {
358                         JFileChooser fc = new JFileChooser();
359                         int cho = fc.showSaveDialog( this );
360                         if ( cho == JFileChooser.APPROVE_OPTION ) {
361                                 file = fc.getSelectedFile();
362                         }
363                 }
364                 if ( file != null ) {
365                         try {
366                                 ImageIO.write( canvas.getBufferedImage(), "PNG", file );
367                         }
368                         catch ( IOException ex ) {
369                                 JOptionPane.showMessageDialog( this"保存失敗!" );
370                         }
371                 }
372         }
373 
374         private void onMenuExit() {
375                 onExit();
376         }
377 
378         private void onExit() {
379                 if ( ! onLeaveButCancel() ) {
380                         System.exit( 0 );
381                 }
382         }
383 
384         private void onChoiceLineType() {
385                 float [] da;
386                 switch ( choLineType.getSelectedIndex() ) {
387                         case 0 :
388                                 da = new float[]{ 1.0f0.0f };
389                                 canvas.setLineDash( da, 0.0f );
390                                 break;
391                         case 1 :
392                                 da = new float[]{ 4.0f8.0f };
393                                 canvas.setLineDash( da, 0.0f );
394                                 break;
395                 }
396         }
397 
398         private void onChoiceLineWidth() {
399                 switch ( choLineWidth.getSelectedIndex() ) {
400                         case 0 :
401                                 canvas.setLineWidth( 1.0f );
402                                 break;
403                         case 1 :
404                                 canvas.setLineWidth( 4.0f );
405                                 break;
406                 }
407         }
408 
409         private void onChoiceColor() {
410                 switch ( choColor.getSelectedIndex() ) {
411                         case 0 :
412                                 canvas.setColor( Color.BLACK );
413                                 break;
414                         case 1 :
415                                 canvas.setColor( Color.RED );
416                                 break;
417                         case 2 :
418                                 canvas.setColor( JColorChooser.showDialog( this"自定義顏色", canvas.getColor() ) );
419                                 break;
420                 }
421         }
422 
423         private MenuItem       menuNew, menuOpen, menuSave, menuExit;
424         private Choice         choLineType, choLineWidth, choColor;
425         private Button         butLine, butTria, butOval, butRect;
426         private PainterCanvas  canvas;
427         private Panel          pl;
428         private JScrollPane    pane = null;
429         private File           file = null;
430 
431 }
432 
433 
434 //------------------------------------------------------------------------------------------
435 
436 
437 public class Painter {
438 
439         public static void main( String [] args ) {
440                 new PainterWin();
441         }
442 
443 }
444 
445 

 

posted on 2011-06-09 20:03 coreBugZJ 閱讀(2759) 評論(0)  編輯 收藏 引用 所屬分類: ProgrammingLanguage

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            性做久久久久久久久| 亚洲国产精品123| 国产精品久久久久国产a级| 亚洲一区二区日本| 在线一区亚洲| 午夜免费久久久久| 久久超碰97人人做人人爱| 亚洲欧美成人精品| 欧美在线免费一级片| 欧美资源在线观看| 欧美aaa级| 国产精品你懂的在线| 亚洲福利一区| 一区二区高清在线观看| 亚洲在线国产日韩欧美| 久久久午夜视频| 欧美日韩午夜在线| 国内精品伊人久久久久av一坑| 1204国产成人精品视频| 亚洲一区二区在线播放| 美女精品视频一区| 亚洲视频axxx| 欧美jizz19性欧美| 伊人久久综合97精品| 亚洲一区二区三区激情| 亚洲国产日韩欧美| 久久精品国产亚洲精品| 国产精品www色诱视频| 在线观看91精品国产麻豆| 亚洲欧美视频在线观看视频| 欧美激情精品久久久久久变态| 亚洲网友自拍| 国产精品久久网站| 午夜国产欧美理论在线播放| 日韩小视频在线观看专区| 免费亚洲一区二区| 亚洲欧洲一区二区三区久久| 嫩草伊人久久精品少妇av杨幂| 欧美一区在线直播| 精品成人一区二区| 欧美激情一区二区三区在线| 美女尤物久久精品| 日韩网站在线看片你懂的| 亚洲精品免费电影| 欧美三日本三级三级在线播放| 一区二区三区久久网| 亚洲一区自拍| 亚洲欧美激情诱惑| 国内久久精品视频| 亚洲精品一区二区三区樱花| 国产精品v片在线观看不卡| 亚洲男女自偷自拍图片另类| 先锋影音国产一区| 亚洲国产三级网| 亚洲淫片在线视频| 亚洲高清一二三区| 亚洲综合成人婷婷小说| 亚洲国产小视频| 欧美一区二区三区日韩| 亚洲久久一区| 美国十次成人| 久久精品在这里| 欧美午夜在线| 夜夜狂射影院欧美极品| 亚洲丁香婷深爱综合| 欧美一区亚洲一区| 亚洲综合首页| 欧美日韩一区在线| 亚洲精品国产系列| 亚洲大胆人体视频| 久久香蕉国产线看观看网| 午夜精品久久久久久久蜜桃app | 一区二区三区.www| 欧美精品久久99| 亚洲国产91| 一区二区三区免费在线观看| 老司机免费视频久久| 蜜月aⅴ免费一区二区三区| 一区二区三区中文在线观看| 久久久久**毛片大全| 欧美aa国产视频| 久久亚洲精品伦理| 亚洲二区三区四区| 亚洲性图久久| 国内外成人免费激情在线视频| 欧美一区亚洲一区| 亚洲人体1000| 久久riav二区三区| 亚洲精品乱码久久久久久蜜桃麻豆 | 久久精品女人| 亚洲国产一成人久久精品| 欧美激情亚洲自拍| 欧美一级片一区| 亚洲人成免费| 久久看片网站| 亚洲欧美另类在线观看| 亚洲三级免费| 亚洲国产99精品国自产| 国产精品入口福利| 欧美精品日韩综合在线| 久久视频在线看| 欧美夜福利tv在线| 国产精品99久久久久久久久| 欧美国产先锋| 亚洲高清123| 欧美高清视频| 欧美国产综合视频| 亚洲黄色视屏| 亚洲国产裸拍裸体视频在线观看乱了中文 | 亚洲国产精品免费| 男女视频一区二区| 亚洲免费久久| 欧美日韩在线看| 久久精品一区二区三区中文字幕| 久久黄色影院| 欧美精品亚洲精品| 久久精品视频亚洲| 欧美日韩在线免费| 麻豆91精品| 国产精一区二区三区| 亚洲精品欧美| 1769国产精品| 久久国产免费| 欧美在线|欧美| 欧美日韩在线一区二区三区| 亚洲电影在线看| 国内精品久久久久影院优| 一区二区三区久久网| 日韩午夜av在线| 欧美福利电影网| 欧美国产精品日韩| 在线观看一区二区视频| 久久精品视频免费播放| 欧美一级电影久久| 国产精品美女久久| 亚洲午夜未删减在线观看| 亚洲天堂久久| 国产精品福利网| 亚洲女同精品视频| 欧美中文字幕在线观看| 国产欧美精品一区| 欧美一二区视频| 美乳少妇欧美精品| 1000部国产精品成人观看| 久久一区二区视频| 欧美大片网址| 亚洲日本理论电影| 欧美人成在线视频| 一区二区三区视频免费在线观看| 这里只有精品视频| 国产精品久久久久久久久久免费看| 一本色道久久综合| 香蕉久久a毛片| 狠狠干综合网| 欧美成人在线免费视频| 亚洲老板91色精品久久| 午夜精品三级视频福利| 国产在线欧美| 欧美成人一二三| 一区二区毛片| 久久深夜福利| 日韩亚洲综合在线| 国产精品久久久久久久午夜片| 亚洲综合成人在线| 欧美.com| 亚洲欧美变态国产另类| 韩日成人av| 欧美日本在线视频| 亚洲欧美国产一区二区三区| 久久亚洲精品网站| 99国产精品久久久久久久久久| 国产精品久久久久一区| 久久人人爽人人爽爽久久| 亚洲三级免费电影| 美女黄毛**国产精品啪啪| 久久久综合香蕉尹人综合网| 亚洲国产日日夜夜| 国产精品看片资源| 免费久久99精品国产| 亚洲专区一二三| 亚洲电影自拍| 久久久久国产一区二区三区四区 | 亚洲欧美文学| 在线观看欧美一区| 国产精品s色| 美女999久久久精品视频| 亚洲一区久久| 亚洲精品国产欧美| 老司机精品视频网站| 亚洲一区二区在线看| 最新国产成人在线观看| 黑人巨大精品欧美黑白配亚洲| 欧美日韩三区四区| 美日韩免费视频| 午夜亚洲视频| 亚洲天堂av在线免费| 最新日韩av| 亚洲第一主播视频| 六月天综合网| 久久久激情视频|