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.Line2D;
|
10
|
|
11
|
public class GraphicsOpsExamples2
|
12
|
{
|
13
|
static class StrokeManager
|
14
|
{
|
15
|
|
16
|
private final Stroke dotStroke = new BasicStroke(LineStroke.DOT_LINE_WIDTH,
|
17
|
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] {
|
18
|
LineStroke.DOT_STEP, LineStroke.DOT_STEP }, LineStroke.DOT_STEP);
|
19
|
|
20
|
private final Stroke dotSmallStroke = new BasicStroke(LineStroke.DOT_LINE_WIDTH,
|
21
|
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] {
|
22
|
LineStroke.DOT_STEP_SMALL, LineStroke.DOT_STEP_SMALL },
|
23
|
LineStroke.DOT_STEP_SMALL);
|
24
|
|
25
|
private final Stroke dotSmallThinStroke = new BasicStroke(LineStroke.DOT_LINE_THIN_WIDTH,
|
26
|
BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0.0f, new float[] {
|
27
|
LineStroke.DOT_STEP_SMALL, LineStroke.DOT_STEP_SMALL },
|
28
|
LineStroke.DOT_STEP_SMALL);
|
29
|
|
30
|
public final void setLineStroke(Graphics2D g2, LineStroke stroke, int strokeWidth)
|
31
|
{
|
32
|
Stroke javaStroke;
|
33
|
|
34
|
switch (stroke)
|
35
|
{
|
36
|
case SPECIFIED_WIDTH:
|
37
|
javaStroke = new BasicStroke(strokeWidth);
|
38
|
break;
|
39
|
case DOTTED:
|
40
|
javaStroke = dotStroke;
|
41
|
break;
|
42
|
case DOTTED_SMALL:
|
43
|
javaStroke = dotSmallStroke;
|
44
|
break;
|
45
|
case DOTTED_SMALL_THIN:
|
46
|
javaStroke = dotSmallThinStroke;
|
47
|
break;
|
48
|
default:
|
49
|
javaStroke = new BasicStroke();
|
50
|
}
|
51
|
|
52
|
g2.setStroke(javaStroke);
|
53
|
}
|
54
|
}
|
55
|
|
56
|
public static void main(String[] args)
|
57
|
{
|
58
|
SwingUtilities.invokeLater(new Runnable()
|
59
|
{
|
60
|
public void run()
|
61
|
{
|
62
|
final JFrame frame = new JFrame("Graphics Operations");
|
63
|
frame.setSize(800, 600);
|
64
|
frame.setLocation(150, 150);
|
65
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
66
|
|
67
|
final StrokeManager strokeManager = new StrokeManager();
|
68
|
frame.setContentPane(new JComponent()
|
69
|
{
|
70
|
public void paint(Graphics g)
|
71
|
{
|
72
|
Graphics2D g2 = (Graphics2D) g;
|
73
|
g2.setBackground(Color.white);
|
74
|
g2.clearRect(0, 0, 800, 600);
|
75
|
g2.setColor(Color.black);
|
76
|
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 1);
|
77
|
g2.drawLine(10, 10, 790, 30);
|
78
|
g2.drawLine(10, 30, 790, 10);
|
79
|
g2.drawRect(40, 40, 55, 30);
|
80
|
|
81
|
g2.drawLine(210, 40, 210, 70);
|
82
|
g2.drawLine(241, 40, 241, 70);
|
83
|
g2.drawLine(250, 40, 305, 40);
|
84
|
g2.drawLine(250, 70, 305, 70);
|
85
|
|
86
|
g2.drawLine(320, 40, 350, 70);
|
87
|
g2.drawLine(320, 70, 350, 40);
|
88
|
|
89
|
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 2);
|
90
|
g2.drawLine(10, 80, 790, 100);
|
91
|
g2.drawLine(10, 100, 790, 80);
|
92
|
g2.drawRect(40, 110, 55, 30);
|
93
|
|
94
|
g2.drawLine(210, 110, 210, 140);
|
95
|
g2.drawLine(241, 110, 241, 140);
|
96
|
g2.drawLine(250, 110, 305, 110);
|
97
|
g2.drawLine(250, 140, 305, 140);
|
98
|
|
99
|
g2.drawLine(320, 110, 350, 140);
|
100
|
g2.drawLine(320, 140, 350, 110);
|
101
|
|
102
|
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 3);
|
103
|
g2.drawLine(10, 150, 790, 170);
|
104
|
g2.drawLine(10, 170, 790, 150);
|
105
|
g2.drawRect(40, 180, 55, 30);
|
106
|
|
107
|
g2.drawLine(210, 180, 210, 210);
|
108
|
g2.drawLine(241, 180, 241, 210);
|
109
|
g2.drawLine(250, 180, 305, 180);
|
110
|
g2.drawLine(250, 210, 305, 210);
|
111
|
g2.drawLine(320, 180, 350, 210);
|
112
|
g2.drawLine(320, 210, 350, 180);
|
113
|
|
114
|
strokeManager.setLineStroke(g2, LineStroke.DOTTED, 3);
|
115
|
g2.drawLine(10, 220, 790, 240);
|
116
|
g2.drawLine(10, 240, 790, 220);
|
117
|
g2.drawRect(40, 250, 55, 30);
|
118
|
|
119
|
g2.drawLine(210, 250, 210, 280);
|
120
|
g2.drawLine(241, 250, 241, 280);
|
121
|
g2.drawLine(250, 250, 305, 250);
|
122
|
g2.drawLine(250, 280, 305, 280);
|
123
|
g2.drawLine(320, 250, 350, 280);
|
124
|
g2.drawLine(320, 280, 350, 250);
|
125
|
strokeManager.setLineStroke(g2, LineStroke.DOTTED_SMALL, 3);
|
126
|
g2.drawLine(10, 290, 790, 310);
|
127
|
g2.drawLine(10, 310, 790, 290);
|
128
|
g2.drawRect(40, 320, 55, 30);
|
129
|
|
130
|
g2.drawLine(210, 320, 210, 350);
|
131
|
g2.drawLine(241, 320, 241, 350);
|
132
|
g2.drawLine(250, 320, 305, 320);
|
133
|
g2.drawLine(250, 350, 305, 350);
|
134
|
g2.drawLine(320, 320, 350, 350);
|
135
|
g2.drawLine(320, 350, 350, 320);
|
136
|
strokeManager.setLineStroke(g2, LineStroke.DOTTED_SMALL_THIN, 3);
|
137
|
g2.drawLine(10, 360, 790, 380);
|
138
|
g2.drawRect(40, 390, 55, 30);
|
139
|
|
140
|
g2.drawLine(210, 390, 210, 420);
|
141
|
g2.drawLine(241, 390, 241, 420);
|
142
|
g2.drawLine(250, 390, 305, 390);
|
143
|
g2.drawLine(250, 420, 305, 420);
|
144
|
g2.drawLine(320, 390, 350, 420);
|
145
|
g2.drawLine(320, 420, 350, 390);
|
146
|
|
147
|
|
148
|
|
149
|
|
150
|
|
151
|
|
152
|
|
153
|
|
154
|
|
155
|
|
156
|
|
157
|
|
158
|
|
159
|
|
160
|
|
161
|
|
162
|
|
163
|
|
164
|
strokeManager.setLineStroke(g2, LineStroke.SPECIFIED_WIDTH, 2);
|
165
|
g2.setColor(Color.black);
|
166
|
g2.translate(250, 450);
|
167
|
g2.drawLine(4, 3, 15, 14);
|
168
|
g2.drawLine(4, 14, 15, 3);
|
169
|
g2.drawLine(5, 14, 16, 3);
|
170
|
g2.setColor(Color.white);
|
171
|
g2.fillRect(2, 2, 15, 2);
|
172
|
g2.fillRect(2, 14, 15, 2);
|
173
|
|
174
|
g2.translate(30, 0);
|
175
|
g2.setColor(Color.black);
|
176
|
Line2D.Float l1 = new Line2D.Float(4, 3, 15, 14);
|
177
|
g2.draw(g2.getStroke().createStrokedShape(l1));
|
178
|
Line2D.Float l2 = new Line2D.Float(4, 14, 15, 3);
|
179
|
g2.draw(g2.getStroke().createStrokedShape(l2));
|
180
|
g2.setColor(Color.white);
|
181
|
g2.fillRect(2, 2, 15, 2);
|
182
|
g2.fillRect(2, 14, 15, 2);
|
183
|
|
184
|
g2.translate(30, 0);
|
185
|
g2.setColor(Color.black);
|
186
|
Polygon p1 = new Polygon();
|
187
|
p1.addPoint(4, 3);
|
188
|
p1.addPoint(5, 4);
|
189
|
p1.addPoint(6, 5);
|
190
|
p1.addPoint(7, 6);
|
191
|
p1.addPoint(8, 7);
|
192
|
p1.addPoint(9, 8);
|
193
|
p1.addPoint(10, 9);
|
194
|
p1.addPoint(11, 10);
|
195
|
p1.addPoint(12, 11);
|
196
|
p1.addPoint(13, 12);
|
197
|
p1.addPoint(14, 13);
|
198
|
p1.addPoint(15, 14);
|
199
|
g2.draw(p1);
|
200
|
Polygon p2 = new Polygon();
|
201
|
p2.addPoint(4, 14);
|
202
|
p2.addPoint(5, 13);
|
203
|
p2.addPoint(6, 12);
|
204
|
p2.addPoint(7, 11);
|
205
|
p2.addPoint(8, 10);
|
206
|
p2.addPoint(9, 9);
|
207
|
p2.addPoint(10, 8);
|
208
|
p2.addPoint(11, 7);
|
209
|
p2.addPoint(12, 6);
|
210
|
p2.addPoint(13, 5);
|
211
|
p2.addPoint(14, 4);
|
212
|
p2.addPoint(15, 3);
|
213
|
p2.addPoint(5, 14);
|
214
|
p2.addPoint(6, 13);
|
215
|
p2.addPoint(7, 12);
|
216
|
p2.addPoint(8, 11);
|
217
|
p2.addPoint(9, 10);
|
218
|
p2.addPoint(10, 9);
|
219
|
p2.addPoint(11, 8);
|
220
|
p2.addPoint(12, 7);
|
221
|
p2.addPoint(13, 6);
|
222
|
p2.addPoint(14, 5);
|
223
|
p2.addPoint(15, 4);
|
224
|
p2.addPoint(16, 3);
|
225
|
g2.draw(p2);
|
226
|
g2.setColor(Color.white);
|
227
|
g2.fillRect(2, 2, 15, 2);
|
228
|
g2.fillRect(2, 14, 15, 2);
|
229
|
}
|
230
|
});
|
231
|
|
232
|
frame.setVisible(true);
|
233
|
}
|
234
|
});
|
235
|
}
|
236
|
}
|
237
|
|