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

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 閱讀(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>
            亚洲一区在线视频| 妖精视频成人观看www| 欧美成人免费一级人片100| 久久久999| 亚洲精品美女在线| 9色精品在线| 国产人久久人人人人爽| 麻豆国产精品va在线观看不卡| 美女视频网站黄色亚洲| 中文在线不卡| 欧美一区观看| 亚洲精品黄色| 亚洲在线视频观看| 亚洲第一级黄色片| 亚洲久久成人| 国产午夜亚洲精品羞羞网站| 欧美黄色日本| 国产精品久久久久久久久久免费看| 久久精品视频在线| 欧美第一黄网免费网站| 亚洲欧美一级二级三级| 久久免费视频一区| 亚洲午夜激情在线| 久久久www成人免费精品| 99视频精品全国免费| 亚洲欧美三级在线| 亚洲精品视频在线| 亚洲欧美成人在线| 亚洲日本一区二区三区| 亚洲影院高清在线| 亚洲欧洲一二三| 午夜精彩国产免费不卡不顿大片| 亚洲国产精品久久久久秋霞影院| 日韩亚洲欧美成人| 精品成人一区二区三区| 一区二区免费在线播放| 在线播放国产一区中文字幕剧情欧美 | 欧美国产视频一区二区| 欧美一级理论性理论a| 日韩亚洲欧美一区二区三区| 这里只有精品丝袜| 亚洲国产成人91精品| 亚洲影音先锋| 99av国产精品欲麻豆| 久久xxxx精品视频| 亚洲午夜视频在线| 你懂的国产精品永久在线| 欧美一区精品| 欧美黄色小视频| 国产精品mv在线观看| 蜜桃av综合| 国产裸体写真av一区二区| 最近中文字幕mv在线一区二区三区四区| 国产精品久久久久久av下载红粉 | 欧美一级艳片视频免费观看| 欧美国产精品久久| 久久综合久久综合这里只有精品| 欧美性生交xxxxx久久久| 欧美激情精品久久久久| 蜜桃av综合| 国产精品一区免费观看| 欧美mv日韩mv亚洲| 国产日韩欧美亚洲一区| 日韩网站在线| 亚洲三级视频| 久久人人精品| 久久久亚洲午夜电影| 国产精品免费一区豆花| 亚洲毛片在线看| 91久久精品一区二区别| 久久久国产精品一区| 久久成人国产精品| 国产精品免费观看在线| 夜夜嗨av一区二区三区网页| 亚洲综合视频1区| 亚洲黄色在线观看| 久久视频在线免费观看| 久久久精品五月天| 国产区二精品视| 亚洲欧美另类综合偷拍| 亚洲免费视频网站| 欧美日韩一区二区三区在线| 亚洲人成亚洲人成在线观看图片 | 日韩午夜激情| 99精品视频一区二区三区| 欧美成人精品h版在线观看| 麻豆精品精品国产自在97香蕉| 国产日韩综合| 午夜精品久久久久久久久久久| 午夜欧美大尺度福利影院在线看| 欧美三级视频| 9久草视频在线视频精品| 一区二区三区免费看| 欧美精品在欧美一区二区少妇| 欧美福利网址| 在线欧美亚洲| 老司机精品视频网站| 欧美1区2区视频| **欧美日韩vr在线| 六月天综合网| 亚洲第一在线视频| 亚洲久久视频| 欧美日韩黄视频| 夜久久久久久| 亚洲欧美久久久久一区二区三区| 国产精品国色综合久久| 亚洲影视在线| 久久久www| 伊人久久大香线| 免费在线欧美黄色| 亚洲人体影院| 亚洲一区二区久久| 国产精品看片你懂得| 亚洲中字黄色| 久久久久久久一区二区三区| 精品av久久久久电影| 美女精品一区| 亚洲日韩视频| 亚洲视频在线观看视频| 国产精品美女久久久久久久| 亚洲欧美在线磁力| 老鸭窝91久久精品色噜噜导演| 在线欧美影院| 欧美精品成人在线| 一区二区三区精品视频在线观看 | 久久综合一区二区三区| 亚洲国产精品久久久久秋霞不卡| 99人久久精品视频最新地址| 国产精品多人| 篠田优中文在线播放第一区| 免费不卡欧美自拍视频| 亚洲三级视频在线观看| 欧美午夜电影一区| 欧美在线免费| 欧美成人午夜激情在线| 在线亚洲一区二区| 国产精品久在线观看| 久久久久成人精品免费播放动漫| 亚洲第一页中文字幕| 亚洲影视在线| 狠狠色狠狠色综合日日五| 欧美成人一区二区三区片免费| 夜夜嗨av色一区二区不卡| 久久精品国产亚洲一区二区三区| 亚洲国产精品va在线看黑人| 欧美日韩在线观看一区二区| 欧美一区二区三区四区夜夜大片 | 午夜亚洲福利| 精品不卡在线| 欧美日韩一区二区在线观看| 午夜精品久久久久| 亚洲国产女人aaa毛片在线| 亚洲欧美激情诱惑| 亚洲大片在线| 国产精品久久久久久久一区探花| 久久超碰97人人做人人爱| 亚洲国产三级| 欧美一区二视频在线免费观看| 伊人色综合久久天天五月婷| 欧美日一区二区在线观看 | 男人插女人欧美| 亚洲一区二区黄| 欧美电影电视剧在线观看| 亚洲男女自偷自拍图片另类| 亚洲第一狼人社区| 国产精品成人久久久久| 噜噜噜噜噜久久久久久91| 亚洲网站在线看| 欧美激情综合色综合啪啪 | 亚洲精品中文字幕有码专区| 国产欧美激情| 欧美精品v国产精品v日韩精品| 欧美亚洲午夜视频在线观看| 亚洲精品人人| 免费不卡视频| 欧美一区二区三区啪啪| 亚洲乱码精品一二三四区日韩在线| 国产欧亚日韩视频| 欧美日韩国产一区| 久久久久网站| 亚洲欧美日韩国产综合| 亚洲国产视频直播| 久久亚洲综合| 欧美影院一区| 在线亚洲欧美视频| 最新69国产成人精品视频免费| 国产日韩高清一区二区三区在线| 欧美日韩高清一区| 免费观看日韩av| 久久国产精品72免费观看| 亚洲图片欧美日产| 亚洲日本无吗高清不卡| 农夫在线精品视频免费观看| 欧美在线亚洲| 亚洲欧美视频在线| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美在线视频免费观看| 亚洲一区二区免费看| 亚洲精品黄网在线观看| 欧美福利一区二区三区|