Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #27435 > unrolled thread
| Started by | mariuszpietrzak73@gmail.com |
|---|---|
| First post | 2014-02-01 14:34 -0800 |
| Last post | 2014-02-03 09:16 -0800 |
| Articles | 5 — 4 participants |
Back to article view | Back to comp.lang.java.programmer
Drawstring() and mirror printing. mariuszpietrzak73@gmail.com - 2014-02-01 14:34 -0800
Re: Drawstring() and mirror printing. "John B. Matthews" <nospam@nospam.invalid> - 2014-02-01 20:19 -0500
Re: Drawstring() and mirror printing. Silvio <silvio@internet.com> - 2014-02-02 23:14 +0100
Re: Drawstring() and mirror printing. mariuszpietrzak73@gmail.com - 2014-02-03 07:49 -0800
Re: Drawstring() and mirror printing. Roedy Green <see_website@mindprod.com.invalid> - 2014-02-03 09:16 -0800
| From | mariuszpietrzak73@gmail.com |
|---|---|
| Date | 2014-02-01 14:34 -0800 |
| Subject | Drawstring() and mirror printing. |
| Message-ID | <da2c2292-8afa-4993-af35-49fa23a58e12@googlegroups.com> |
Hi. Please help me to reslove issue. I have to print mirror image of string. I tryed to use AffineTransform and scale but it didnt work well. Mabe have you any idea to do this
[toc] | [next] | [standalone]
| From | "John B. Matthews" <nospam@nospam.invalid> |
|---|---|
| Date | 2014-02-01 20:19 -0500 |
| Message-ID | <lck6et$o6s$1@dont-email.me> |
| In reply to | #27435 |
On 2/1/14, 5:34 PM, mariuszpietrzak73@gmail.com wrote:
>
> Please help me to [resolve] issue. I have to print mirror image of string. I [tried] to use AffineTransform and scale. but it didn't work well. Maybe have you any idea to do this?
>
As an alternative to Stefan Ram delightful example, you can alter the
graphics context's transform to invert through the desired axis. The
example below uses scale(1, -1) to create a vertical reflection:
private static class MirrorPanel extends JPanel {
private static final int SZ = 42;
private static final String s = "Hello";
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setFont(getFont().deriveFont(42f));
g2d.drawString(s, SZ, SZ);
g2d.drawLine(SZ, SZ,
SZ + g2d.getFontMetrics().stringWidth(s), SZ);
g2d.scale(1, -1);
g2d.drawString(s, SZ, -SZ);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(SZ * 5, SZ * 2);
}
}
See also this related example due to Daniele Futtorovic:
<http://groups.google.com/group/comp.lang.java.help/browse_frm/thread/2d6db5d6d6739b22>
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
[toc] | [prev] | [next] | [standalone]
| From | Silvio <silvio@internet.com> |
|---|---|
| Date | 2014-02-02 23:14 +0100 |
| Message-ID | <52eec338$0$2899$e4fe514c@news2.news.xs4all.nl> |
| In reply to | #27435 |
On 02/02/2014 02:25 AM, Stefan Ram wrote:
> mariuszpietrzak73@gmail.com writes:
>> I tryed to use AffineTransform
>
> The next program is similar to the one I posted before, but
> uses AffineTransform. The mirror animation now transforms
> smoothly between the original image and the mirror image.
>
> class Main extends javax.swing.JComponent implements java.lang.Runnable
> { final int[] X ={ 800, 800 };
> private static final long serialVersionUID = 0L;
> java.awt.image.BufferedImage window
> = new java.awt.image.BufferedImage
> ( X[ 1 ], X[ 0 ], java.awt.image.BufferedImage.TYPE_INT_RGB );
> java.awt.image.BufferedImage window1
> = new java.awt.image.BufferedImage
> ( X[ 1 ], X[ 0 ], java.awt.image.BufferedImage.TYPE_INT_RGB );
> public static void main( final java.lang.String args[] )
> { java.awt.EventQueue.invokeLater( new Main() ); }
> public static int get( final int color, final int shift )
> { return (( color &( 0x000000FF << shift ))>> shift ); }
> public static int B( final int color ){ return get( color, 0 ); }
> public static int G( final int color ){ return get( color, 8 ); }
> public static int R( final int color ){ return get( color, 16 ); }
> public static void limit( final double[] a, final int i, final int max )
> { if( a[ i ]< 0 ){ a[ i ]= 0; return; }else
> if( a[ i ]> max ){ a[ i ]= max; return; }}
> public static int color( final int r, final int g, final int b )
> { return ( r << 16 )|( g << 8 )| b; }
> public static int color( final double[] C )
> { return color( ( int )C[ 0 ],( int )C[ 1 ],( int )C[ 2 ]); }
> long l0 = -1L;
> @java.lang.Override public final void run()
> { final javax.swing.JFrame frame = new javax.swing.JFrame( this.getClass().getName() );
> Main.this.setPreferredSize( new java.awt.Dimension( X[ 1 ], X[ 0 ]));
> frame.setDefaultCloseOperation( javax.swing.JFrame.EXIT_ON_CLOSE );
> frame.add( Main.this ); frame.pack(); frame.setVisible( true );
> final java.lang.Runnable loop = new java.lang.Runnable()
> { double[] x ={ X[ 0 ]/2, X[ 1 ]/2 }; double[] C ={ 127, 127, 127 };
> long t = 0; long b = 0; long c = 0;
> public void run(){ if( b == 0L )b = java.lang.System.nanoTime();
> if( b == -1L )
> { final long l = java.lang.System.nanoTime();
> while( java.lang.System.nanoTime() - l < 100_000_000L )
> { final long l1 = java.lang.System.nanoTime(); if( l0 < 0 )l0 = l;
> final double k = 0.5 - java.lang.Math.cos
> ( ( l1 - l0 )/ 1E9 %( 2 * java.lang.Math.PI )) / 2;
> final java.awt.Graphics2D g =( java.awt.Graphics2D )Main.this.window.getGraphics();
> g.clearRect( 0, 0, X[ 1 ], X[ 0 ]);
> g.setTransform( new java.awt.geom.AffineTransform( 1 - 2 * k, 0, 0, 1, k * X[ 1 ], 0 ));
> g.drawImage( Main.this.window1, 0, 0, null );
> Main.this.paintImmediately( 0, 0, java.lang.Integer.MAX_VALUE, java.lang.Integer.MAX_VALUE ); }
> java.awt.EventQueue.invokeLater( this ); }
> else if( java.lang.System.nanoTime() - b > 10_000_000_000L )
> { window.copyData( window1.getRaster() );
> Main.this.window.createGraphics();
> b = -1; c = java.lang.System.nanoTime(); java.awt.EventQueue.invokeLater( this ); }
> else { for( int i = 0; i < 100_000; ++i )
> { for( int j = 0; j < 2; ++j ){ x[ j ]+=( java.lang.Math.random() - 0.5 ); limit( x, j, X[ j ] - 1 ); }
> for( int j = 0; j < 3; ++j ){ C[ j ]+=( java.lang.Math.random() - 0.5 ); limit( C, j, 255 ); }
> Main.this.window.setRGB(( int )x[ 1 ],( int )x[ 0 ], color( C )); }
> final long l = java.lang.System.nanoTime();
> if( l - t > 100_000L )
> { Main.this.paintImmediately
> ( 0, 0, java.lang.Integer.MAX_VALUE, java.lang.Integer.MAX_VALUE ); t = l; }
> java.awt.EventQueue.invokeLater( this ); }}}; loop.run(); }
> @java.lang.Override public void paintComponent( final java.awt.Graphics graphics )
> { graphics.drawImage( Main.this.window, 0, 0, null ); }}
>
Stefan,
Would you be so kind to pull code in your posts through some code
formatting utility? You may choose to use this horrible layout and may
even have gotten so used to it that you find it legible but for the
casual followers of threads on this NG it is really painful.
I for one habitually skip all code in your posts because it takes me at
least twice the effort to read as the average snippet.
Silvio
[toc] | [prev] | [next] | [standalone]
| From | mariuszpietrzak73@gmail.com |
|---|---|
| Date | 2014-02-03 07:49 -0800 |
| Message-ID | <5d268742-66fa-4ccd-90e2-55352074081d@googlegroups.com> |
| In reply to | #27435 |
W dniu sobota, 1 lutego 2014 23:34:37 UTC+1 użytkownik mariuszp...@gmail.com napisał: > Hi. > > Please help me to reslove issue. I have to print mirror image of string. I tryed to use AffineTransform and scale but it didnt work well. Mabe have you any idea to do this Thank you very much for help. The simple solution but so much time I spent to understand it. Yor solution is really working.
[toc] | [prev] | [next] | [standalone]
| From | Roedy Green <see_website@mindprod.com.invalid> |
|---|---|
| Date | 2014-02-03 09:16 -0800 |
| Message-ID | <tmjve9p5uf3o867473in81svqifcbs3u89@4ax.com> |
| In reply to | #27451 |
On Mon, 3 Feb 2014 07:49:25 -0800 (PST), mariuszpietrzak73@gmail.com wrote, quoted or indirectly quoted someone who said : >I tryed to use AffineTransform and scale but it didnt work well. Mabe have = >you any idea to do this Now you see how it is done, can you give any hints why you went off the rails? -- Roedy Green Canadian Mind Products http://mindprod.com Because a thing seems difficult for you, do not think it impossible for anyone to accomplish. ~ Marcus Aurelius 121-04-26 180-03-17
[toc] | [prev] | [standalone]
Back to top | Article view | comp.lang.java.programmer
csiph-web