Решение на задачата Paint a House as SVG

Здравейте.
За начало ще предложа решение на задача от домашното по курса Java Basic – Paint a House as SVG.Избрах тази задача, защото ми допадна, с това че има рисуване, пък аз харесвам рисуването.Отне ми два дни по около 8-9 часа да се ровя в нета, да чета документации и гледам кодове докато я сътворя.
Ето го и условието:

problem10

За да може да запишете картинката в SVG формат, трябва да си импортнете външна библиотека за Java подържаща SVG.Аз използвах Batik.Може да го свалите от следния линк:
http://apache.cbox.biz/xmlgraphics/batik/batik-1.7.zip

За да рисуваме ще използваме класът JPanеl като платно, ще го extend – нем в нашия клас.А за библиотеките, които трябва да се зареждат, ами Еклипс ще ни подскаже докато пишем.
Дефинираме си масив(лист) public ArrayList inputCoordinatesArrayList от стрингове, който ще пази координатите на точките подавани на входа от конзолата.Правим конструктор public PaintHouse(ArrayList inputCoordinates), с който ще достъпваме масива от main методът.

pic1

Правим методът public void paintComponent(Graphics g), в който ще рисуваме и смятаме дали точките са вътре в къщичката.Този метод приема параметър Graphics обект.След което викаме paintComponent от супер класът JPanеl с параметър обект g.Правим фона на платното бял, след което кастваме Graphics g обекта към Graphics2D g2, тъй като този клас има по-богати възможности за рисуване.
Дефинираме една променлива от int, с която може да променяме мащаба на картинката, защото със входните координати става много миниатюрна.
Нека първо нарисуваме лявата част на къщичката.С методът g2.setStroke(new BasicStroke(3f)) задаваме дебелината на рисувателната линия.А с класа Shape рисуваме фигурите(формите).С методът Rectangle2D.Double(double top, double left,double width, double height) рисуваме правоъгълник, като параметрите, които задаваме са координати на горен ляв ъгъл, дебелина и височина.С g2.setPaint(Color.LIGHT_GRAY) задаваме текущия цвят и с g2.fill(rectangleLeft) запълваме правоъгълника с него.След това сменяме цвета с g2.setPaint(Color.BLACK) и изчертаваме контура на правоъгълника с g2.draw(rectangleLeft).По същия начин рисуваме дясната част на къщичката.За покрива, ще използваме друг клас, защото не е правоъгълник – GeneralPath.С roof.moveTo задаваме началната точка , а с roof.lineTo чертаем линиите на контура на триъгълника(покрива).Накрая с roof.closePath() приключваме фигурата.След това като при предните две части оцветяваме, запълваме и правим контур.
pic2

//TODO …
pic3

//TODO …
pic4

//TODO …
pic5

//TODO …
pic6

//TODO …
pic7

Публикувано на Java Basics. Запазване в отметки на връзката.

Вашият коментар