GraphicsOpsExamples2.java
1 |
package test; |
---|---|
2 |
|
3 |
|
4 |
import javax.swing.*; |
5 |
|
6 |
import com.goldencode.p2j.ui.client.gui.driver.LineStroke; |
7 |
|
8 |
import java.awt.*; |
9 |
import java.awt.geom.AffineTransform; |
10 |
import java.awt.geom.Line2D; |
11 |
|
12 |
public class GraphicsOpsExamples2 |
13 |
{ |
14 |
static class StrokeManager |
15 |
{ |
16 |
// initialize dot pattern
|
17 |
private final Stroke dotStroke = new BasicStroke(LineStroke.DOT_LINE_WIDTH, |
18 |
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] { |
19 |
LineStroke.DOT_STEP, LineStroke.DOT_STEP }, LineStroke.DOT_STEP); |
20 |
|
21 |
private final Stroke dotSmallStroke = new BasicStroke(LineStroke.DOT_LINE_WIDTH, |
22 |
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] { |
23 |
LineStroke.DOT_STEP_SMALL, LineStroke.DOT_STEP_SMALL }, |
24 |
LineStroke.DOT_STEP_SMALL); |
25 |
|
26 |
private final Stroke dotSmallThinStroke = new BasicStroke(LineStroke.DOT_LINE_THIN_WIDTH, |
27 |
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] { |
28 |
LineStroke.DOT_STEP_SMALL, LineStroke.DOT_STEP_SMALL }, |
29 |
LineStroke.DOT_STEP_SMALL); |
30 |
|
31 |
public final void setLineStroke(Graphics2D g2, LineStroke stroke, int strokeWidth) |
32 |
{ // default line stroke
|
33 |
Stroke javaStroke;
|
34 |
|
35 |
switch (stroke)
|
36 |
{ |
37 |
case SPECIFIED_WIDTH:
|
38 |
javaStroke = new BasicStroke(strokeWidth); |
39 |
break;
|
40 |
case DOTTED:
|
41 |
javaStroke = dotStroke; |
42 |
break;
|
43 |
case DOTTED_SMALL:
|
44 |
javaStroke = dotSmallStroke; |
45 |
break;
|
46 |
case DOTTED_SMALL_THIN:
|
47 |
javaStroke = dotSmallThinStroke; |
48 |
break;
|
49 |
default:
|
50 |
javaStroke = new BasicStroke(); |
51 |
} |
52 |
|
53 |
g2.setStroke(javaStroke); |
54 |
} |
55 |
} |
56 |
|
57 |
public static void main(String[] args) |
58 |
{ |
59 |
SwingUtilities.invokeLater(new Runnable() |
60 |
{ |
61 |
public void run() |
62 |
{ |
63 |
final JFrame frame = new JFrame("Graphics Operations"); |
64 |
frame.setSize(800, 600); |
65 |
frame.setLocation(150, 150); |
66 |
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
67 |
|
68 |
final StrokeManager strokeManager = new StrokeManager(); |
69 |
frame.setContentPane(new JComponent() |
70 |
{ |
71 |
public void paint(Graphics g) |
72 |
{ |
73 |
Graphics2D g2 = (Graphics2D) g; |
74 |
g2.setBackground(Color.white);
|
75 |
g2.clearRect(0, 0, 800, 600); |
76 |
g2.setColor(Color.black);
|
77 |
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 1);
|
78 |
g2.drawLine(10, 10, 790, 30); |
79 |
g2.drawLine(10, 30, 790, 10); |
80 |
g2.drawRect(40, 40, 55, 30); |
81 |
//g2.fillRect(125, 40, 55, 30);
|
82 |
g2.drawLine(210, 40, 210, 70); |
83 |
g2.drawLine(241, 40, 241, 70); |
84 |
g2.drawLine(250, 40, 305, 40); |
85 |
g2.drawLine(250, 70, 305, 70); |
86 |
|
87 |
g2.drawLine(320, 40, 350, 70); |
88 |
g2.drawLine(320, 70, 350, 40); |
89 |
|
90 |
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 2);
|
91 |
g2.drawLine(10, 80, 790, 100); |
92 |
g2.drawLine(10, 100, 790, 80); |
93 |
g2.drawRect(40, 110, 55, 30); |
94 |
//g2.fillRect(125, 110, 55, 30);
|
95 |
g2.drawLine(210, 110, 210, 140); |
96 |
g2.drawLine(241, 110, 241, 140); |
97 |
g2.drawLine(250, 110, 305, 110); |
98 |
g2.drawLine(250, 140, 305, 140); |
99 |
|
100 |
g2.drawLine(320, 110, 350, 140); |
101 |
g2.drawLine(320, 140, 350, 110); |
102 |
|
103 |
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 3);
|
104 |
g2.drawLine(10, 150, 790, 170); |
105 |
g2.drawLine(10, 170, 790, 150); |
106 |
g2.drawRect(40, 180, 55, 30); |
107 |
//g2.fillRect(125, 180, 55, 30);
|
108 |
g2.drawLine(210, 180, 210, 210); |
109 |
g2.drawLine(241, 180, 241, 210); |
110 |
g2.drawLine(250, 180, 305, 180); |
111 |
g2.drawLine(250, 210, 305, 210); |
112 |
g2.drawLine(320, 180, 350, 210); |
113 |
g2.drawLine(320, 210, 350, 180); |
114 |
|
115 |
strokeManager.setLineStroke(g2, LineStroke.DOTTED, 3);
|
116 |
g2.drawLine(10, 220, 790, 240); |
117 |
g2.drawLine(10, 240, 790, 220); |
118 |
g2.drawRect(40, 250, 55, 30); |
119 |
//g2.fillRect(125, 250, 55, 30);
|
120 |
g2.drawLine(210, 250, 210, 280); |
121 |
g2.drawLine(241, 250, 241, 280); |
122 |
g2.drawLine(250, 250, 305, 250); |
123 |
g2.drawLine(250, 280, 305, 280); |
124 |
g2.drawLine(320, 250, 350, 280); |
125 |
g2.drawLine(320, 280, 350, 250); |
126 |
strokeManager.setLineStroke(g2, LineStroke.DOTTED_SMALL, 3);
|
127 |
g2.drawLine(10, 290, 790, 310); |
128 |
g2.drawLine(10, 310, 790, 290); |
129 |
g2.drawRect(40, 320, 55, 30); |
130 |
//g2.fillRect(125, 320, 55, 30);
|
131 |
g2.drawLine(210, 320, 210, 350); |
132 |
g2.drawLine(241, 320, 241, 350); |
133 |
g2.drawLine(250, 320, 305, 320); |
134 |
g2.drawLine(250, 350, 305, 350); |
135 |
g2.drawLine(320, 320, 350, 350); |
136 |
g2.drawLine(320, 350, 350, 320); |
137 |
strokeManager.setLineStroke(g2, LineStroke.DOTTED_SMALL_THIN, 3);
|
138 |
g2.drawLine(10, 360, 790, 380); |
139 |
g2.drawRect(40, 390, 55, 30); |
140 |
//g2.fillRect(125, 390, 55, 30);
|
141 |
g2.drawLine(210, 390, 210, 420); |
142 |
g2.drawLine(241, 390, 241, 420); |
143 |
g2.drawLine(250, 390, 305, 390); |
144 |
g2.drawLine(250, 420, 305, 420); |
145 |
g2.drawLine(320, 390, 350, 420); |
146 |
g2.drawLine(320, 420, 350, 390); |
147 |
|
148 |
|
149 |
|
150 |
// PaintPrimitives.TRANSLATE_POP 1; x = -358; y = -4
|
151 |
// PaintPrimitives.TRANSLATE_PUSH 2; x = 379; y = 4
|
152 |
// PaintPrimitives.CLIP 3; x = 0; y = 0; width = 20; height = 18
|
153 |
// PaintPrimitives.SET_COLOR r = 240; g = 240; b = 240
|
154 |
// PaintPrimitives.FILL_3D_RECT x = 0; y = 0; width = 19; height = 17; raised = true
|
155 |
// PaintPrimitives.SET_COLOR r = 0; g = 0; b = 0
|
156 |
// PaintPrimitives.SET_LINE_STROKE strokeStyleId = 1; strokeWidth = 2
|
157 |
// PaintPrimitives.DRAW_LINE x1 = 4; y1 = 3; x2 = 15; y2 = 14
|
158 |
// PaintPrimitives.DRAW_LINE x1 = 4; y1 = 14; x2 = 15; y2 = 3
|
159 |
// PaintPrimitives.DRAW_LINE x1 = 5; y1 = 14; x2 = 16; y2 = 3
|
160 |
// PaintPrimitives.SET_COLOR r = 240; g = 240; b = 240
|
161 |
// PaintPrimitives.FILL_RECT x = 2; y = 2; width = 15; height = 2
|
162 |
// PaintPrimitives.FILL_RECT x = 2; y = 14; width = 15; height = 2
|
163 |
// PaintPrimitives.SET_COLOR r = 0; g = 0; b = 0
|
164 |
// PaintPrimitives.SET_LINE_STROKE strokeStyleId = 0; strokeWidth = 0
|
165 |
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 2);
|
166 |
g2.setColor(Color.black);
|
167 |
g2.translate(0, 450); |
168 |
g2.drawString("1. Close button precise emulation", 0, -10); |
169 |
g2.drawLine(4, 3, 15, 14); |
170 |
g2.drawLine(4, 14, 15, 3); |
171 |
g2.drawLine(5, 14, 16, 3); |
172 |
g2.setColor(Color.white);
|
173 |
g2.fillRect(2, 2, 15, 2); |
174 |
g2.fillRect(2, 14, 15, 2); |
175 |
|
176 |
g2.translate(340, 0); |
177 |
g2.setColor(Color.black);
|
178 |
g2.drawString("2. Close button with help of shapes", 0, -10); |
179 |
Line2D.Float l1 = new Line2D.Float(4, 3, 15, 14); |
180 |
g2.draw(g2.getStroke().createStrokedShape(l1)); |
181 |
Line2D.Float l2 = new Line2D.Float(4, 14, 15, 3); |
182 |
g2.draw(g2.getStroke().createStrokedShape(l2)); |
183 |
g2.setColor(Color.white);
|
184 |
g2.fillRect(2, 2, 15, 2); |
185 |
g2.fillRect(2, 14, 15, 2); |
186 |
|
187 |
g2.translate(-340, 30); |
188 |
// g2.setColor(Color.black);
|
189 |
// Polygon p1 = new Polygon();
|
190 |
// p1.addPoint(4, 3);
|
191 |
// p1.addPoint(5, 4);
|
192 |
// p1.addPoint(6, 5);
|
193 |
// p1.addPoint(7, 6);
|
194 |
// p1.addPoint(8, 7);
|
195 |
// p1.addPoint(9, 8);
|
196 |
// p1.addPoint(10, 9);
|
197 |
// p1.addPoint(11, 10);
|
198 |
// p1.addPoint(12, 11);
|
199 |
// p1.addPoint(13, 12);
|
200 |
// p1.addPoint(14, 13);
|
201 |
// p1.addPoint(15, 14);
|
202 |
// g2.draw(p1);
|
203 |
// Polygon p2 = new Polygon();
|
204 |
// p2.addPoint(4, 14);
|
205 |
// p2.addPoint(5, 13);
|
206 |
// p2.addPoint(6, 12);
|
207 |
// p2.addPoint(7, 11);
|
208 |
// p2.addPoint(8, 10);
|
209 |
// p2.addPoint(9, 9);
|
210 |
// p2.addPoint(10, 8);
|
211 |
// p2.addPoint(11, 7);
|
212 |
// p2.addPoint(12, 6);
|
213 |
// p2.addPoint(13, 5);
|
214 |
// p2.addPoint(14, 4);
|
215 |
// p2.addPoint(15, 3);
|
216 |
// p2.addPoint(5, 14);
|
217 |
// p2.addPoint(6, 13);
|
218 |
// p2.addPoint(7, 12);
|
219 |
// p2.addPoint(8, 11);
|
220 |
// p2.addPoint(9, 10);
|
221 |
// p2.addPoint(10, 9);
|
222 |
// p2.addPoint(11, 8);
|
223 |
// p2.addPoint(12, 7);
|
224 |
// p2.addPoint(13, 6);
|
225 |
// p2.addPoint(14, 5);
|
226 |
// p2.addPoint(15, 4);
|
227 |
// p2.addPoint(16, 3);
|
228 |
// g2.draw(p2);
|
229 |
// g2.setColor(Color.white);
|
230 |
// g2.fillRect(2, 2, 15, 2);
|
231 |
// g2.fillRect(2, 14, 15, 2);
|
232 |
//first successful
|
233 |
|
234 |
g2.setColor(Color.black);
|
235 |
g2.drawString("3. Close button to draw line / with antialias on", 0, 0); |
236 |
|
237 |
g2.translate(0, 10); |
238 |
|
239 |
AffineTransform at = g2.getTransform();
|
240 |
g2.translate(4, 3); |
241 |
g2.setColor(Color.black);
|
242 |
g2.drawLine(0, 0, 11, 11); |
243 |
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); |
244 |
AffineTransform at1 = new AffineTransform(g2.getTransform()); |
245 |
at1.rotate(Math.PI / 2.0, 5.5, 5.5); |
246 |
g2.setTransform(at1); |
247 |
g2.drawLine(0, 0, 11, 11); |
248 |
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); |
249 |
g2.setTransform(at); |
250 |
g2.setColor(Color.white);
|
251 |
g2.fillRect(2, 2, 15, 2); |
252 |
g2.fillRect(2, 14, 15, 2); |
253 |
//second successful
|
254 |
g2.setColor(Color.black);
|
255 |
g2.translate(50, 0); |
256 |
g2.drawLine(4, 3, 15, 14); |
257 |
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); |
258 |
g2.drawLine(4, 14, 15, 3); |
259 |
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); |
260 |
//g2.drawLine(5, 14, 16, 3);
|
261 |
g2.setColor(Color.white);
|
262 |
g2.fillRect(2, 2, 15, 2); |
263 |
g2.fillRect(2, 14, 15, 2); |
264 |
|
265 |
} |
266 |
}); |
267 |
|
268 |
frame.setVisible(true);
|
269 |
} |
270 |
}); |
271 |
} |
272 |
} |
273 |
|