Your SlideShare is downloading. ×
0
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Java 2D a kreslení
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java 2D a kreslení

4,918

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,918
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 8. Java 2D a kreslení Ondřej Brejla
  • 2. Obsah Grafický kontext Volba barvy Volba písma Fontové metriky Kreslení primitivních objektů Kreslení obrázků Rozhraní – Shape, Paint, Stroke, Composite Transformace Kreslení polygonů a obecných křivek
  • 3. Co je to ”grafický kontext”?
  • 4. Co je to ”grafický kontext”?
  • 5. Co je to ”grafický kontext”?Krysa je v grafickém kontextu dělící čáry.
  • 6. Grafický kontext Co to znamená ”grafický kontext”?  Je to datová struktura  ”Abstraktní kreslítko” - jak a kam VS. co  Je to objekt třídy Graphics (resp. Graphics2D)  Definuje metody pro kreslení a výstup textu  Pro kreslení do komponent většinou překrýváme metodu: public void paintComponent(Graphics g)
  • 7. Jak mohu zvolit barvu?
  • 8. Jak mohu zvolit barvu?
  • 9. Jak mohu zvolit barvu? Namočíme štětec do kalíšku... ...nebo...
  • 10. Jak mohu zvolit barvu? ...nebo... ...použijeme třídu java.awt.Color
  • 11. Jak mohu zvolit barvu? Color.ORANGEColor.GREEN Color.BLUE Color.YELLOWColor.RED Color.WHITE
  • 12. Volba barvy Před kreslením je barvu třeba nastavit  g.setColor(Color color); // getColor(); Použijeme objekt java.awt.Color  Buď předdefinovanou konstantu (např. Color.RED)  Nebo vlastní instanci new Color(int red, int green, int blue);  red, green, blue - <0; 255>
  • 13. Jaké písmo vybrat?
  • 14. Jaké písmo vybrat? Aš nazg durbatulűk...
  • 15. Jaké písmo vybrat? Tak jednoduché to nebude...
  • 16. Volba písma Před použitím je potřeba písmo nastavit g.setFont(Font font); // g.getFont(); Písmo je reprezentováno objektem třídy java.awt.Font  Konstruktor má 3 parametry – name, style, size  name – logické (Serif, Monospaced, SansSerif, Dialog a DialogInput), nebo ”fyzické”  style – Font.PLAIN | BOLD | ITALIC  size – velikost v bodech – 1 bod = 1/72” Objekt písma nelze později upravovat
  • 17. Jaké jsou fontové metriky?
  • 18. Jaké jsou fontové metriky?
  • 19. Jaké jsou fontové metriky? Je jich spousty...vypadá to zmateně...
  • 20. Jaké jsou fontové metriky? ...nás, naštěstí, zajímá pouze jedna...
  • 21. Jaké jsou fontové metriky? ...a to tato jednoduchá...uff.
  • 22. Fontové metriky Fontové metriky získáme z objektu třídy java.awt.FontMetrics  public int getAscent() - výška znaku nad účařím v pixelech  public int getDescent() - výška znaku pod účařím v pixelech  public int getLeading() - velikost mezery mezi řádky v pixelech  public int getHeight() - velikost písma v pixelech
  • 23. Fontové metriky A objekt FontMetrics získáme z grafického kontextu  g.getFontMetrics() - metrika aktuálního fontu  g.getFontMetrics(Font font) – metrika zadaného fontu
  • 24. Jak kreslit primitivní objekty?
  • 25. Jak kreslit primitivní objekty?
  • 26. Jak kreslit primitivní objekty? Třeba jako Picasso (Guernica)... ...nebo...
  • 27. Jak kreslit primitivní objekty? ...nebo... ...použijeme metody třídy java.awt.Graphics
  • 28. Kreslení primitivních objektů g.drawLine(int x1, int y1, int x2, int y2) – vykreslí čáru mezi body g.drawRect(int x, int y, int width, int  height) – vykreslí obrys obdélníka (od souřadnic levého horního rohu) g.fillRect(int x, int y, int width, int  height) – vyplní obdélník (-||-) g.drawRoundRect(int x, int y, int width,  int height, int arcWidth, int arcHeight) - vykreslí obrys obdélníka se zaoblenými rohy (-||-) g.fillRoundRect(int x, int y, int width,  int height, int arcWidth, int arcHeight) – vyplní obdélník se zaoblenými rohy (-||-)
  • 29. Kreslení primitivních objektů g.draw3DRect(int x, int y, int width, int  height, boolean b) – vykreslí obrys 3D obdélníka, b  == true => vystouplý, b == false => zapuštěný ( -||- ) g.fill3DRect(int x, int y, int width, int  height, boolean b) – vyplní 3D obdélník (parametry stejné jako u draw) g.drawOval(int x, int y, int width, int  height) – vykreslí obrys elipsy, parametry popisují obalový obdélník (elipsa se všech stran dotýká) g.fillOval(int x, int y, int width, int  height) – vyplní elipsu (parametry stejné jako u draw)
  • 30. Kreslení primitivních objektů Oblouk je určen počátečním úhlem a velikostí vnitřního úhlu ve stupních  počáteční úhel je na ”3 hodinách”  Proti směru hodinových ručiček je úhel kladný g.drawArc(int x, int y, int width, int  height, int startAngle, int arcAngle) – vykreslí obrys oblouku relativně k zadané elipse g.fillArc(int x, int y, int width, int  height, int startAngle, int arcAngle) – vyplní oblouk relativně k zadané elipse g.drawString(String s, int x, int y) – vykreslí řetězec (souřadnice účaří nejlevějšího znaku)
  • 31. Jak kreslit obrázky?
  • 32. Jak kreslit obrázky?
  • 33. Jak kreslit obrázky? Ručně kreslit radši nebudeme...
  • 34. Jak kreslit obrázky? ...radši obrázek načteme a necháme vykreslit
  • 35. Kreslení obrázků Rozhraní Icon  Obrázek pevné velikosti používaný pro dekorace  Nelze provádět úpravy obrázku  Lze vykreslit na komponentu metodou g.paintIcon() Abstraktní třída Image reprezentuje obrázek  VolatileImage – data nejsou přímo dostupná z Javy  BufferedImage – obsahuje pole pixelů dostupných z Javy, lze do něj kreslit
  • 36. Kreslení obrázků ImageIcon  Ikona na základě obrázku  Lze použít Image tam, kde je vyžadováno Icon  Konstruktor bere název souboru – URL (gif, png, jpg)
  • 37. Kreslení obrázků Načtení obrázku  Image je abstraktní, takže musíme jinak  Pomocí třídy Toolkit  Toolkit.getDefaultToolkit().createImage(file); Kreslení obrázků  g.drawImage() - image, levý horní roh a velikost  Kreslení obrázku je asynchronní  Pokud nejsou k dispozici kompletní data, informuje komponentu přes rozhranní ImageObserver, jakmile se další data objeví  Metoda umí vykreslit i výřez
  • 38. Graphics vs. Graphics2D?
  • 39. Graphics vs. Graphics2D?
  • 40. Graphics vs. Graphics2D? Stáří vs. Mládí...
  • 41. Graphics vs. Graphics2D? Třída Graphics2D  Kvůli zpětné kompatibilitě potomkem třídy Graphics  Kvůli zpětné kompatibilitě se také stále předává grafický kontext Graphics a na Graphics2D je třeba přetypovat  Přidává nové vlastnosti
  • 42. Rozhraní - Shape Reprezentuje nějaký tvar  Rectangle2D, Ellipse2D, Arc2D  Line2D, CubicCurve2D, QuadCurve2D  GeneralPath Vykreslení se děje pomocí metod g2d.draw(Shape s) a g2d.fill(Shape s) třídy Graphics2D
  • 43. Rozhraní - Paint Určuje jakou barvou se bude jaký pixel kreslit Nastavuje se pomocí metody g2d.setPaint(Paint p); // g2d.getPaint()  Color  GradientPaint, LinearGradientPaint,  RadialGradientPaint  SystemColor – barva pro určitou část GUI  TexturePaint
  • 44. Rozhraní - Stroke Určuje jakým způsobem se budou kreslit čáry a obrysy Nastavuje se pomocí metody g2d.setStroke(Stroke s);// g2d.getStroke()  BasicStroke – definuje tloušťku čáry, styl zakončení a zalomení čar a přerušení čar
  • 45. Rozhraní - Composite Určuje způsob zkombinování původní a nové barvy pixelu při kreslení Nastavuje se pomocí metody g2d.setComposite(Composite s);  // g2d.getComposite()  AlphaComposite – původní barva se zkombinuje s kreslenou a umožňuje průhlednost
  • 46. Jak transformovat?
  • 47. Jak transformovat?
  • 48. Jak transformovat? Kreslených transformerů se ptát nebudeme...
  • 49. Jak transformovat? ...jednoduše použijeme AffineTransform
  • 50. Transformace Je možné provést afinní transformaci systému souřadnic (transformace je reprezentována maticí) Třída AffineTransform obaluje matici  Transformaci provedeme postupně pomocí metod translate (posun počátku), rotate (rotace) a scale (změna měřítka) objektu třídy AffineTransform Nastavuje se pomocí metody g2d.setTransform(AffineTransform t);  // g2d.getTransform()
  • 51. Polygony?
  • 52. Polygony?
  • 53. Polygony? Kdepak závodní polygon... ...kreslit budeme!
  • 54. Polygony a obecné křivky Mnohoúhelníky  Uzavřené tvary složené z úseku rovných čar  Lze je vykreslit pomocí metod g.drawPolygon(int[] xPoints, int[] yPoints,  int point) a g.fillPolygon(int[] xPoints, int[] yPoints,  int point) třídy Graphics  Polygon může být reprezentován třídou Polygon, která obsahuje metodu addPoint() pro přidání bodu
  • 55. Polygony a obecné křivky Lomené čáry  Posloupnosti bodů spojené rovnými čarami  Uzavřené lomené čáry jsou polygony  Lze je vykreslit pomocí metody  g.drawPolyline(int[] xPoints, int[] yPoints,  int point)
  • 56. A to je pro dnešek vše. Otázky? Děkuji za pozornost!

×