• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Liutauras Vilda
  • Jeanne Boyarsky
  • Devaka Cooray
  • Paul Clapham
  • Tim Cooke
  • Knute Snortum
  • Bear Bibeault
Saloon Keepers:
  • Ron McLeod
  • Tim Moores
  • Stephan van Hulst
  • Piet Souris
  • Ganesh Patekar
  • Frits Walraven
  • Carey Brown
  • Tim Holloway

Graphics2D AffineTransform

Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

I am trying to create GeneralPath as shown in above image but I am unable to apply Affine Transformation properly. I want to output something as second figure which is letter 'F'. I can scale it but when I rotate it disappears (i think something is wrong with my logic). I know how to apply stroke and change to yellow color, so will need help with transformation only. My output so far is shown

. Please see my code below:

Will appreciate your help!
[Thumbnail for image2.jpg]
output so far
Saloon Keeper
Posts: 3295
  • Likes 2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
hi Nitesh,

well, your rotation does work, but since the rotation is about the origin (which is (0,0)
and in this case it is the upper left pixel of your JPanel), it disappears out of view.

To make the best use of modeling, is to do two things:

first, for each object that you want to draw, like the 'F' in your program, define it in a
coordinate system that is natural for the figure you want to draw. So, for instance, define
a coordinate system for your F that has its left lowest point at coordinate (0,0), has a height of one
unit, et cetera.

next, define a coordinate system for your JPanel, that will make it easy to draw your figure.

So, knowing that your F is one unit long, define the coordinate system of the JPanel such that
it occupies the coordinates (-1, 1) - (1, -1). So the origin (0,0) will be in the center of the panel.
Having set this coordinatesystem, then draw your F in its natural coordinates.

This all involves some linear algebra. but foremost do read the documentation of AffineTransforms,
so you know what to do and how to use it.

A very nice chapter about Java 2D Graphics can be found here:


Nitesh Nirala
Posts: 8
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for replying and sharing the link. I have read the chapter but still having hard time with changing coordinate for JPanel. Will read the code and try to understand it again. Thanks for your help
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!