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

coreBugZJ

此 blog 已棄。

畫板 Java實現

也是剛剛從郵箱里發(fā)現的古董。。。



我的代碼:

  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 閱讀(2760) 評論(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>
            亚洲精品四区| 国产综合色产| 欧美成人一品| 欧美在线观看一区| 一区二区免费在线播放| 欧美粗暴jizz性欧美20| 欧美一区综合| 亚洲欧美在线一区二区| 日韩亚洲欧美精品| 亚洲国内自拍| 伊人蜜桃色噜噜激情综合| 国产精品视频自拍| 欧美视频1区| 欧美黑人多人双交| 久热精品视频在线| 久久久久久久久岛国免费| 香蕉乱码成人久久天堂爱免费 | 亚洲激情电影在线| 麻豆91精品| 久久亚洲欧洲| 久久精品在线免费观看| 性久久久久久久| 亚洲欧美欧美一区二区三区| 一级日韩一区在线观看| 99精品热视频| 日韩午夜在线播放| 日韩视频永久免费| 日韩小视频在线观看| 亚洲久久一区| 99精品欧美一区二区三区综合在线 | 亚洲欧洲精品一区二区三区| 精品成人一区| 精品动漫一区| 亚洲高清免费| 亚洲精品美女久久7777777| 亚洲国产日韩欧美在线99| 在线免费不卡视频| 91久久久一线二线三线品牌| 亚洲韩国青草视频| 亚洲免费不卡| 亚洲午夜精品久久久久久浪潮 | 国产精品第十页| 国产精品久久久久av免费| 国产精品入口尤物| 国产欧美一区二区三区视频| 国产一区二区日韩| 狠狠色狠色综合曰曰| 在线欧美亚洲| 亚洲美女黄网| 亚洲自拍电影| 久久国产99| 美女任你摸久久| 亚洲福利视频免费观看| 亚洲精品国产精品国自产观看浪潮 | 亚洲欧洲中文日韩久久av乱码| 亚洲精品国精品久久99热一| 一区二区三区久久| 欧美在线www| 免费看的黄色欧美网站| 欧美日韩激情网| 国产精品一区二区久久| 精品不卡一区二区三区| 日韩一区二区福利| 欧美一级在线视频| 欧美 日韩 国产 一区| 亚洲理伦在线| 欧美一级成年大片在线观看| 欧美 日韩 国产在线| 国产精品国产三级国产专播精品人| 国产亚洲精品v| 日韩网站免费观看| 久久精品天堂| 亚洲人成人99网站| 欧美一级电影久久| 欧美国产日韩xxxxx| 国产日产欧产精品推荐色| 亚洲区在线播放| 欧美专区日韩视频| 91久久久久久久久| 欧美一区二区福利在线| 欧美日本亚洲| 亚洲第一精品福利| 亚洲欧美日产图| 亚洲国产精品一区| 欧美一区二区三区免费观看视频| 欧美韩日高清| 狠狠色狠色综合曰曰| 亚洲一区二区三区中文字幕| 免费人成精品欧美精品| 亚洲无吗在线| 欧美精品激情在线| 在线观看日韩一区| 欧美一区2区视频在线观看| 91久久在线观看| 久久精品中文| 国产乱理伦片在线观看夜一区| 亚洲精品欧美极品| 久久蜜桃资源一区二区老牛 | 国产拍揄自揄精品视频麻豆| 99国产精品久久久久久久| 久久综合中文字幕| 亚洲欧美日韩国产综合在线| 欧美日韩亚洲免费| 亚洲人成在线影院| 美女爽到呻吟久久久久| 午夜精品久久久久久久99樱桃| 欧美日韩在线高清| 亚洲九九九在线观看| 欧美 日韩 国产一区二区在线视频| 亚洲资源av| 国产精品久久久一区二区| 亚洲美女精品久久| 亚洲高清久久网| 久久夜色精品国产| 一区二区三区我不卡| 久久精品日韩一区二区三区| 亚洲视频福利| 国产精品高清在线| 亚洲在线视频| 亚洲无线视频| 国产精品久久9| 亚洲欧美视频在线观看视频| 99精品99| 国产精品国产三级国产专播品爱网 | 国产精品乱码| 亚洲欧美视频一区| 亚洲香蕉网站| 国产精品永久入口久久久| 午夜精品福利在线| 亚洲一区二区在线免费观看视频| 国产精品狠色婷| 亚洲欧美日韩综合| 亚洲女人小视频在线观看| 国产精品嫩草99av在线| 先锋影院在线亚洲| 欧美一区二区三区免费在线看| 国产日韩在线一区二区三区| 久久国产精品一区二区三区| 新片速递亚洲合集欧美合集| 国产一区欧美日韩| 另类图片国产| 欧美电影免费| 国产精品99久久久久久久久久久久| 日韩视频在线免费| 国产精品午夜春色av| 久久精品动漫| 麻豆9191精品国产| 99av国产精品欲麻豆| 一本色道婷婷久久欧美| 国产精品美女久久| 久久婷婷国产综合国色天香| 另类亚洲自拍| 夜夜嗨av一区二区三区四季av| 一区二区三区免费网站| 国产日韩欧美精品一区| 欧美成人69av| 欧美日韩国产高清视频| 欧美一级欧美一级在线播放| 久久精品中文字幕一区| 日韩一级二级三级| 亚洲一区二区三区免费观看| 国内偷自视频区视频综合| 亚洲大胆女人| 国产精品卡一卡二卡三| 久久综合给合久久狠狠狠97色69| 欧美精品99| 欧美中文字幕在线| 欧美 日韩 国产 一区| 午夜国产欧美理论在线播放| 久久久久国产精品人| 一区二区三区视频在线播放| 亚洲欧美在线网| 亚洲老司机av| 欧美一区二区在线播放| 日韩一区二区免费看| 香蕉久久夜色精品国产| 亚洲最快最全在线视频| 欧美在线观看一区| 一区二区三区四区国产精品| 久久精品女人天堂| 这里只有视频精品| 久久天堂成人| 亚洲欧美欧美一区二区三区| 猛男gaygay欧美视频| 欧美一级在线播放| 欧美另类专区| 麻豆亚洲精品| 国产嫩草一区二区三区在线观看| 亚洲高清激情| 国产一区二区中文| 一区二区日韩| 99riav久久精品riav| 久久久久久久一区| 西瓜成人精品人成网站| 欧美精品乱码久久久久久按摩| 久久免费高清| 国产精品热久久久久夜色精品三区| 亚洲二区三区四区| 一区二区在线观看视频在线观看| 亚洲无玛一区|