質問編集履歴

3

2018/06/22 23:07

投稿

si2
si2

スコア6

test CHANGED
@@ -1 +1 @@
1
- ImageスクロールをRasbian上できれいに
1
+ ImageスクロールをRasberry pi 3上できれいに
test CHANGED
@@ -1,12 +1,12 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 全画面で複数のImageをきれいにスクロールさせたいのです。
3
+ Rasberry pi 3上で複数のImageをきれいにスクロールさせたいのです。
4
4
 
5
5
 
6
6
 
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
9
- 全画面を使用しImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
9
+ Rasberry pi 3とwindows10でImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
10
10
 
11
11
  windowsだと全て正常に見えますが、
12
12
 
@@ -14,9 +14,7 @@
14
14
 
15
15
  なぜでしょうか?
16
16
 
17
- また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で
17
+ また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で直接実行しても表示状態が変わります。
18
-
19
- 直接実行しても表示状態が変わります。
20
18
 
21
19
  ---
22
20
 

2

2018/06/22 23:07

投稿

si2
si2

スコア6

test CHANGED
File without changes
test CHANGED
File without changes

1

windowsとrasbianで動作比較するサンプルを作成しました

2018/06/22 22:44

投稿

si2
si2

スコア6

test CHANGED
@@ -1 +1 @@
1
- JPanelスクロールがマウス移動変化する
1
+ ImageスクロールをRasbian上きれいに
test CHANGED
@@ -1,43 +1,219 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 全画面でImageをきれいにスクロールさせたいのです。
3
+ 全画面で複数のImageをきれいにスクロールさせたいのです。
4
4
 
5
5
 
6
6
 
7
7
  ### 発生している問題・エラーメッセージ
8
8
 
9
- 全画面を使用しJpanelのImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが
10
-
11
- マウスを移動させるなぜか?移動がきれいに見えます
12
-
13
- Java画面更新処理何か関連あるように思えます。
14
-
15
- みに、タイマーrepaintを行っている以外は、マウス移動では、何もイベント処理は行っていません。
16
-
17
-
18
-
19
-
20
-
21
- ### 該当のソースコード
22
-
23
-
24
-
25
- ```ここに言語名を入力
26
-
27
- java
9
+ 全画面を使用しImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
10
+
11
+ windowsだ全て正常に見えますが、
12
+
13
+ raspbery pi 3のrasbianだとrepaint範囲を変えるスクロール飛んだり軌跡が残ったり色々です。
14
+
15
+ しょうか?
16
+
17
+ また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で
18
+
19
+ 直接実行しても表示状態が変わります。
20
+
21
+ ---
22
+
23
+ ```ここに言語を入力
24
+
25
+ package javaapplication;
26
+
27
+
28
+
29
+ import java.awt.*;
30
+
31
+ import java.util.Timer;
32
+
33
+ import java.util.TimerTask;
34
+
35
+
36
+
37
+ import java.util.concurrent.Executors;
38
+
39
+ import java.util.concurrent.ScheduledExecutorService;
40
+
41
+ import java.util.concurrent.TimeUnit;
42
+
43
+ import javax.swing.*;
44
+
45
+
46
+
47
+ /**
48
+
49
+ *
50
+
51
+ * @author
52
+
53
+ */
54
+
55
+ public class JavaApplication extends JFrame {
56
+
57
+
58
+
59
+ static int Y1,Y2;
60
+
61
+ static Frame frame;
62
+
63
+ ImageIcon icon;
64
+
65
+
66
+
67
+ public JavaApplication()
68
+
69
+ {
70
+
71
+ // ### up.png...300-dot x 300-dot,32bit color PNGファイル ###
72
+
73
+ // icon=new ImageIcon("D:\up.png"); // windows用
74
+
75
+ icon=new ImageIcon("/home/pi/NetBeansProjects/up.png"); // Linux用
76
+
77
+ JLabel label=new JLabel(icon);
78
+
79
+
80
+
81
+ Y1=0;
82
+
83
+ Y2=0;
84
+
85
+
86
+
87
+ Timer t = new Timer();
88
+
89
+ // t.scheduleAtFixedRate(new MyTimer(), 0, 50);
90
+
91
+ t.scheduleAtFixedRate(new MyTimer(), 0, 10);
92
+
93
+
94
+
95
+ }
96
+
97
+
98
+
99
+ /**
100
+
101
+ * @param args the command line arguments
102
+
103
+ */
104
+
105
+ public static void main(String[] args) {
106
+
107
+ // TODO code application logic here
108
+
109
+ frame=new JavaApplication();
110
+
111
+
112
+
113
+ frame.setBounds(0, 0, 480, 400);
114
+
115
+ frame.setVisible(true);
116
+
117
+ }
118
+
119
+
120
+
121
+ public void paint(Graphics g)
122
+
123
+ {
124
+
125
+
126
+
127
+ // super.paint(g); // 軌跡は残らないが、イメージが移動のたびに再描画され汚い
128
+
129
+
130
+
131
+
132
+
133
+ // (0,0)-(480,200) : ok
134
+
135
+ // (0,0)-(480,400) : NG
136
+
137
+ // (0,0)-(240,200) : ok
138
+
139
+ // (0,0)-(240,600) : NG
140
+
141
+ // (0,0)-(480,600) : NG
142
+
143
+
144
+
145
+ // ### windows10では、下記のsuper.repaintを入れなくても正常描画される
146
+
147
+ // ### raspberry pi 3のrasbianでは、下記のsuper.repaintを入れないと描画がたまにしか行われない
148
+
149
+
150
+
151
+ // super.repaint(); // 軌跡が残る+イメージがスキップする
152
+
153
+ super.repaint(0, 0,480,200); // イメージは正常にスクロール
154
+
155
+ // super.repaint(0, 0,480,400); // 軌跡が残る+イメージがスキップする
156
+
157
+ // super.repaint(0, 0,240,200); // イメージは正常にスクロール
158
+
159
+ // super.repaint(0, 0,240,600); // 軌跡が残る+イメージがスキップする
160
+
161
+ // super.repaint(0, 0,480,600); // 軌跡が残る+イメージがだいぶスキップする
162
+
163
+ g.drawImage(icon.getImage(), 0, Y1, this);
164
+
165
+
166
+
167
+ g.drawImage(icon.getImage(), Y1,400,this);
168
+
169
+
170
+
171
+ }
172
+
173
+
174
+
175
+ public class MyTimer extends TimerTask{
176
+
177
+ public void run(){
178
+
179
+ if (Y1 < 200)
180
+
181
+ Y1++;
182
+
183
+ else
184
+
185
+ Y1=0;
186
+
187
+
188
+
189
+ if (Y2 < 200)
190
+
191
+ Y2++;
192
+
193
+ else
194
+
195
+ Y2=0;
196
+
197
+
198
+
199
+ if (frame != null)
200
+
201
+ frame.repaint(0,0,480,400);
202
+
203
+ // panel.repaint();
204
+
205
+
206
+
207
+ }
208
+
209
+ }
210
+
211
+ }
212
+
213
+
28
214
 
29
215
  ```
30
216
 
31
-
32
-
33
- ### 試したこと
34
-
35
-
36
-
37
- ここに問題に対して試したことを記載してください。
38
-
39
-
40
-
41
217
  ### 補足情報(FW/ツールのバージョンなど)
42
218
 
43
219
  NetBeans IDE 8.2 + Rasbian strech