質問編集履歴

3

si2

si2 score 4

2018/06/23 08:07  投稿

ImageスクロールをRasbian上できれいに
ImageスクロールをRasberry pi 3上できれいに
### 前提・実現したいこと
全画面で複数のImageをきれいにスクロールさせたいのです。
Rasberry pi 3上で複数のImageをきれいにスクロールさせたいのです。
### 発生している問題・エラーメッセージ
全画面を使用しImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
Rasberry pi 3とwindows10でImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
windowsだと全て正常に見えますが、
raspbery pi 3のrasbianだとrepaintの範囲を変えるとスクロールが飛んだり軌跡が残ったり色々です。
なぜでしょうか?
また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で
直接実行しても表示状態が変わります。
また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で直接実行しても表示状態が変わります。
---
```ここに言語を入力
package javaapplication;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.swing.*;
/**
*
* @author
*/
public class JavaApplication extends JFrame {
 static int Y1,Y2;
 static Frame frame;
 ImageIcon icon;
 
 public JavaApplication()
 {
   // ### up.png...300-dot x 300-dot,32bit color PNGファイル ###
//   icon=new ImageIcon("D:\\up.png");                     // windows用
   icon=new ImageIcon("/home/pi/NetBeansProjects/up.png"); // Linux用
   JLabel label=new JLabel(icon);
   
   Y1=0;
   Y2=0;
   Timer t = new Timer();
//   t.scheduleAtFixedRate(new MyTimer(), 0, 50);
   t.scheduleAtFixedRate(new MyTimer(), 0, 10);
 }
 
 /**
  * @param args the command line arguments
  */
 public static void main(String[] args) {
   // TODO code application logic here
   frame=new JavaApplication();
   
   frame.setBounds(0, 0, 480, 400);
   frame.setVisible(true);
 }
 public void paint(Graphics g)
 {
   
//   super.paint(g);               // 軌跡は残らないが、イメージが移動のたびに再描画され汚い
// (0,0)-(480,200) : ok
// (0,0)-(480,400) : NG
// (0,0)-(240,200) : ok
// (0,0)-(240,600) : NG
// (0,0)-(480,600) : NG
// ### windows10では、下記のsuper.repaintを入れなくても正常描画される
// ### raspberry pi 3のrasbianでは、下記のsuper.repaintを入れないと描画がたまにしか行われない
//   super.repaint();              // 軌跡が残る+イメージがスキップする
   super.repaint(0, 0,480,200); // イメージは正常にスクロール
//   super.repaint(0, 0,480,400); // 軌跡が残る+イメージがスキップする
//   super.repaint(0,  0,240,200);   // イメージは正常にスクロール
//   super.repaint(0, 0,240,600); // 軌跡が残る+イメージがスキップする
//   super.repaint(0, 0,480,600); // 軌跡が残る+イメージがだいぶスキップする
   g.drawImage(icon.getImage(), 0,   Y1, this);
   g.drawImage(icon.getImage(), Y1,400,this);
   
 }
 
 public class MyTimer extends TimerTask{
   public void run(){
     if (Y1 < 200)
       Y1++;
      else
       Y1=0;
     if (Y2 < 200)
       Y2++;
     else
       Y2=0;
     if (frame != null)
       frame.repaint(0,0,480,400);
//     panel.repaint();
     
   }
 }
}
```
### 補足情報(FW/ツールのバージョンなど)
NetBeans IDE 8.2 + Rasbian strech
ここにより詳細な情報を記載してください。
  • Java

    16811 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Swing

    257 questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

  • Raspbian

    166 questions

2

si2

si2 score 4

2018/06/23 07:44  投稿

ImageスクロールをRasbian上できれいに
### 前提・実現したいこと
全画面で複数のImageをきれいにスクロールさせたいのです。
### 発生している問題・エラーメッセージ
全画面を使用しImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
windowsだと全て正常に見えますが、
raspbery pi 3のrasbianだとrepaintの範囲を変えるとスクロールが飛んだり軌跡が残ったり色々です。
なぜでしょうか?
また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で
直接実行しても表示状態が変わります。
---
```ここに言語を入力
package javaapplication;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.swing.*;
/**
*
* @author
*/
public class JavaApplication extends JFrame {
static int Y1,Y2;
static Frame frame;
ImageIcon icon;
public JavaApplication()
{
// ### up.png...300-dot x 300-dot,32bit color PNGファイル ###
// icon=new ImageIcon("D:\\up.png"); // windows用
icon=new ImageIcon("/home/pi/NetBeansProjects/up.png"); // Linux用
JLabel label=new JLabel(icon);
Y1=0;
Y2=0;
Timer t = new Timer();
// t.scheduleAtFixedRate(new MyTimer(), 0, 50);
t.scheduleAtFixedRate(new MyTimer(), 0, 10);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
frame=new JavaApplication();
frame.setBounds(0, 0, 480, 400);
frame.setVisible(true);
}
public void paint(Graphics g)
{
// super.paint(g); // 軌跡は残らないが、イメージが移動のたびに再描画され汚い
// (0,0)-(480,200) : ok
// (0,0)-(480,400) : NG
// (0,0)-(240,200) : ok
// (0,0)-(240,600) : NG
// (0,0)-(480,600) : NG
// ### windows10では、下記のsuper.repaintを入れなくても正常描画される
// ### raspberry pi 3のrasbianでは、下記のsuper.repaintを入れないと描画がたまにしか行われない
// super.repaint(); // 軌跡が残る+イメージがスキップする
super.repaint(0, 0,480,200); // イメージは正常にスクロール
// super.repaint(0, 0,480,400); // 軌跡が残る+イメージがスキップする
// super.repaint(0, 0,240,200); // イメージは正常にスクロール
// super.repaint(0, 0,240,600); // 軌跡が残る+イメージがスキップする
// super.repaint(0, 0,480,600); // 軌跡が残る+イメージがだいぶスキップする
g.drawImage(icon.getImage(), 0, Y1, this);
g.drawImage(icon.getImage(), Y1,400,this);
}
public class MyTimer extends TimerTask{
public void run(){
if (Y1 < 200)
Y1++;
else
Y1=0;
if (Y2 < 200)
Y2++;
else
Y2=0;
if (frame != null)
frame.repaint(0,0,480,400);
// panel.repaint();
}
}
}
```
### 補足情報(FW/ツールのバージョンなど)
NetBeans IDE 8.2 + Rasbian strech
ここにより詳細な情報を記載してください。
  • Java

    16811 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Swing

    257 questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

  • Raspbian

    166 questions

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

si2

si2 score 4

2018/06/22 13:45  投稿

JPanelスクロールがマウス移動で変化する
ImageスクロールをRasbian上できれいに
### 前提・実現したいこと
全画面でImageをきれいにスクロールさせたいのです。
全画面で複数のImageをきれいにスクロールさせたいのです。
### 発生している問題・エラーメッセージ
全画面を使用しJpanelのImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが
マウスを移動させるとなぜか?移動がきれいに見えます。
Java側の画面更新処理と何か関連があるように思えます。
ちなみに、タイマーでrepaintを行っている以外は、マウス移動では、何もイベント処理は行っていません。
全画面を使用しImageにPNGファイルをロードしてタイマーイベント(約10ms)でスクロールさせていますが、移動がギクシャクしてしまいますが、paint内でrepaintする部分を変えるときれいになります。
windowsだと全て正常に見えますが、
raspbery pi 3のrasbianだとrepaintの範囲を変えるとスクロールが飛んだり軌跡が残ったり色々です。
なぜでしょうか?
また、NetBeansをwindowsパソコンからrasbianへリモート接続して実行していますが、rasbian上で
直接実行しても表示状態が変わります。
---
```ここに言語を入力
package javaapplication;
import java.awt.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.swing.*;
/**
*
* @author
*/
public class JavaApplication extends JFrame {
 static int Y1,Y2;
 static Frame frame;
 ImageIcon icon;
 
 public JavaApplication()
 {
   // ### up.png...300-dot x 300-dot,32bit color PNGファイル ###
//   icon=new ImageIcon("D:\\up.png");                     // windows用
   icon=new ImageIcon("/home/pi/NetBeansProjects/up.png"); // Linux用
   JLabel label=new JLabel(icon);
   
   Y1=0;
   Y2=0;
   Timer t = new Timer();
//   t.scheduleAtFixedRate(new MyTimer(), 0, 50);
   t.scheduleAtFixedRate(new MyTimer(), 0, 10);
 }
 
 /**
  * @param args the command line arguments
  */
 public static void main(String[] args) {
   // TODO code application logic here
   frame=new JavaApplication();
   
   frame.setBounds(0, 0, 480, 400);
   frame.setVisible(true);
 }
 public void paint(Graphics g)
 {
   
//   super.paint(g);               // 軌跡は残らないが、イメージが移動のたびに再描画され汚い
### 該当のソースコード
// (0,0)-(480,200) : ok
// (0,0)-(480,400) : NG
// (0,0)-(240,200) : ok
// (0,0)-(240,600) : NG
// (0,0)-(480,600) : NG
```ここに言語名を入力
java
// ### windows10では、下記のsuper.repaintを入れなくても正常描画される
// ### raspberry pi 3のrasbianでは、下記のsuper.repaintを入れないと描画がたまにしか行われない
//   super.repaint();              // 軌跡が残る+イメージがスキップする
   super.repaint(0, 0,480,200); // イメージは正常にスクロール
//   super.repaint(0, 0,480,400); // 軌跡が残る+イメージがスキップする
//   super.repaint(0,  0,240,200);   // イメージは正常にスクロール
//   super.repaint(0, 0,240,600); // 軌跡が残る+イメージがスキップする
//   super.repaint(0, 0,480,600); // 軌跡が残る+イメージがだいぶスキップする
   g.drawImage(icon.getImage(), 0,   Y1, this);
   g.drawImage(icon.getImage(), Y1,400,this);
   
 }
 
 public class MyTimer extends TimerTask{
   public void run(){
     if (Y1 < 200)
       Y1++;
      else
       Y1=0;
     if (Y2 < 200)
       Y2++;
     else
       Y2=0;
     if (frame != null)
       frame.repaint(0,0,480,400);
//     panel.repaint();
     
   }
 }
}
```
 
### 試したこと  
 
ここに問題に対して試したことを記載してください。  
 
### 補足情報(FW/ツールのバージョンなど)
NetBeans IDE 8.2 + Rasbian strech
ここにより詳細な情報を記載してください。
  • Java

    16811 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Swing

    257 questions

    SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

  • Raspbian

    166 questions

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る