2016-09-19 15 views
1

イメージを使用せずにlibgdxで単純な四角形のボタンを作成するにはどうすればよいですか?ボタンにはドロップシャドウがあり、押された状態を処理する必要があります。libgdxで単純な四角形のボタンを作成するにはどうしたらいいですか?

+0

イメージの意味を具体的に示すことはできますか?あなたが画面上で見ることができるものはすべて「イメージ」です。あなたは何を避けようとしていますか、なぜですか? – Tenfour04

答えて

1

私の質問は、コード内にイメージをあらかじめ生成することなく、プログラム内に丸みのある四角形を作成する方法でした。

私は同様の状況にありましたが、パラメータに基づいてPixmap丸い四角形を生成する関数を書きました(すべての単位はピクセル単位です)。また、異なるアルファ値を使用して不透明度を可能にしています(このため、2つのオブジェクトが使用されています)。

この結果得られるPixmapは、レンダリングが容易であればTextureのコンストラクタに簡単に渡すことができます。

public static Pixmap createRoundedRectangle(int width, int height, int cornerRadius, Color color) { 

     Pixmap pixmap = new Pixmap(width, height, Pixmap.Format.RGBA8888); 
     Pixmap ret = new Pixmap(width, height, Pixmap.Format.RGBA8888); 

     pixmap.setColor(color); 

     pixmap.fillCircle(cornerRadius, cornerRadius, cornerRadius); 
     pixmap.fillCircle(width - cornerRadius - 1, cornerRadius, cornerRadius); 
     pixmap.fillCircle(cornerRadius, height - cornerRadius - 1, cornerRadius); 
     pixmap.fillCircle(width - cornerRadius - 1, height - cornerRadius - 1, cornerRadius); 

     pixmap.fillRectangle(cornerRadius, 0, width - cornerRadius * 2, height); 
     pixmap.fillRectangle(0, cornerRadius, width, height - cornerRadius * 2); 

     ret.setColor(color); 
     for (int x = 0; x < width; x++) { 
      for (int y = 0; y < height; y++) { 
       if (pixmap.getPixel(x, y) != 0) ret.drawPixel(x, y); 
      } 
     } 
     pixmap.dispose(); 

     return ret; 
    } 

あなた自身のラッパーオブジェクトのパラメータのうちの1つが変更され、レンダリングするために必要とされたたびに画像を再描画します(例えばRoundedRectangle)を作るにはあまりにも難しいことではありません。この機能を使用します。

+0

ありがとうございますが、このメソッドはあまり効果がありませんね... – user1615898

+0

かなり高速なO(幅*高さ)操作は実行されますが、フレームごとに画像を再レンダリングする必要はありません、任意の値が変更されたときだけです。 –

関連する問題