• ベストアンサー

アプレットで文字列の描画を横を半分に縮小して描画したい。

java初心者です。 アプレットで文字列を描画するときにdrawStringメソッドで描画すると思うのですが、それでデフォルトで描画する時の横の長さを半分にして描画したいのですが(見た目的には縦長にする感じです)、何か方法はあるでしょうか? よろしくお願いします。

  • rapun
  • お礼率65% (196/300)
  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#49664
noname#49664
回答No.1

>デフォルトで描画する時の横の長さを半分にして描画したいのですが(見た目的には縦長にする感じです)、何か方法はあるでしょうか? これは、つまり描画する領域の横幅を決めて、折り返し表示するようにしたいのでしょうか。それとも1文字1文字の横幅が狭くなった感じで表示したい、ということでしょうか。 前者ですと、まともにやろうとするとかなり大変です。java.awt.font.LineBreakMeasurerというクラスを使い、指定の幅ごとにテキストを切り出して描画するような処理をします。面倒な人は、たいていテキストの横幅をFontmetrixなどで割り出していくつかに分割して描いたりします。 後者の場合には、Graphics2Dにはアフィン変換という座標変換の機能がありますので、それを利用して横の座標軸を圧縮して描画するという手があるでしょう。 Graphics2D g2 = (Graphics2D)g; g2.scale(0.5,1.0); g2.drawString(・・・); こんな感じで描画すると、横の座標軸が縦の2分の1になり、結果として横幅が通常の半分になります。

rapun
質問者

お礼

回答ありがとうございます。 私が知りたかったのは後者です。分かりやすい回答でさっそく使えそうです。 ありがとうございます。

関連するQ&A

  • 文字を縦書きで描画する

    drawStringメソッドを使用すると、横書きで 引数の文字列を描画しますが、これを縦書きで描画したい 場合はどのようにすればよろしいのでしょうか?

    • ベストアンサー
    • Java
  • Javaアプレットで描画の中断がしたい

    Java初心者です。学校の課題で数学シュミレーションの結果を Javaアプレットで表示するプログラムを作成しています。 この課題のJavaアプレットでは 複素平面のシュミレーション(計算結果を色のグラデーションで表示する)なのですが、 チョイスやボタン、マウスクリックなどによって、 初期条件や、描画方式、表示範囲などを指定することができます。 とりあえず、シュミレーション結果の描画は 試行錯誤の結果表示ができるようになりました。 paint(Graphics g)メソッドで数値計算、及び描画をしています。 (ちなみに余談かもしれませんがダブルバッファリングをしていて、 描画内容をImageとして書き込んでおいて描画するというかたちです。) 「計算途中(計算には結構時間がかかる)に 新たにボタンなどで指定条件が変更された場合、 現在の描画を中断して次の計算と描画を開始できるように プログラムを改良しなさい」というのが今回の課題です。 つまり、「プログラム的にはpaintメソッドが実行されている途中に 特定のイベントが発生したらpaintメソッドを中断し、 もういちど呼びなおしなさい」ということかと思われます。 スレッドを作り、そのスレッドを中断するなども考えました。 インターネットで検索もしてみましたが、 なかなか情報を見つけられず困っています。 学生が作るプログラムなのでそんなに難しいことではないのだと思うのですが 解決できませんでした。 どうぞよろしくお願いします。

  • Javaで左上の位置を指定して文字を描画する方法を探しています。

    Javaで左上の位置を指定して文字を描画する方法を探しています。 JavaでGraphicsオブジェクトを使用して文字を描画する際に、Javaの標準の方法(java.awt.graphicsのdrawStringメソッド)を使う場合では「ベースラインの位置」を指定しますが、これを「左上端の座標」を指定して描画できるようにするにはどうしたらよいのでしょうか。

    • ベストアンサー
    • Java
  • C#でピクチャーボックスへの文字列描画について

    C#でピクチャーボックスへの文字列描画について DOBON.NETからコピペです //PictureBox1のGraphicsオブジェクトを取得 Graphics g = PictureBox1.CreateGraphics(); string drawString= @"智に働けば角が立つ。情に棹させば流される。 意地を通せば窮屈だ。とかくに人の世は住みにくい。"; //Fontを作成 Font fnt = new Font("MS ゴシック", 12); //文字列を表示する範囲を指定する RectangleF rect = new RectangleF(10, 10, 100, 200); //rectの四角を描く g.FillRectangle(Brushes.White, rect); //文字を書く g.DrawString(drawString, fnt, Brushes.Black, rect); //リソースを開放する fnt.Dispose(); g.Dispose(); 自分で使ってるピクチャーボックスは動的生成してるので picbox[i] という感じになってます この場合 初めの宣言の時は picbox = new System.Windows.Forms.PictureBox[pic_cnt]; for (i = 0; i < n) { picbox[i] = new System.Windows.Forms.PictureBox(); Graphics g = picbox[i].CreateGraphics(); <中略> } で大丈夫なのでしょうか? 文字列は描画されないし、エラーもでないので どこが間違っているのかわかりません… 説明不足のところがあれば書いてください あと、修復場所を指摘してくださればありがたいです

  • javaアプレットで太字を描く方法。

    アプレットを勉強している初心者です。 アプレットで直線を描画するにはdrawLineで描画すると思うのですが、それと同じような感じでそれより太字で描画する方法(メソッドなどが、もしあればそれでも)があれば教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • ウィンドウ上の描画文字列の取得

    他アプリケーション画面上の文字列を取得したく、調べています。 スクロールつきテキストエリア風なのですが、「描画」されているのか GetWindowTextやWM_GETTEXTで取れるのは "output window"。 ソフトをいくつか試したところ、だいたい同様だったのですが NNScanTextのスキャンモードで画面上の文字列を取得できました。 再描画で、描画文字列&位置を取得しているとのこと・・・ ウィンドウまわりの知識がないなりに、GDIなど思いつく限り調べて みたのですが、その方法にたどりつけません。 教えていただけないでしょうか;; > NNScanText http://www.vector.co.jp/soft/winnt/util/se271444.html

  • アプレットで描画したグラフを画像に保存する方法について

    初めて質問させていただきます。 プログラム上で、javaアプレットで描画した折れ線グ ラフ、棒グラフをJPEGなどの画像ファイルとして保存 する方法が分からず困っています。 ひとつの方法として、プリントスクリーンを使用する 方法を考えたのですが、これだと表示されている画面 そのものが画像ファイルとして保存されてしまい、マ ウスカーソルまでもが入っていたりする画像となって しまいます。 何か良い方法がありましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 勝手にアプレットが停止します

    アプレットが動作不良となる時があます。 アプレットの定周期(1秒、2秒など)の 更新描画にて、repaint()メソッドを呼び出していますが、 Javaからupdate()メソッドが呼び出されず、画面の 描画処理が行われていない状態となっていようです。 調べたところ、アプレットのrepaint()メソッド を呼び出すと、Javaからupdate()メソッドが 実行され、paint()メソッドに記述している 各描画処理が行われるはずですが、下記のように 実行されていないようです。 非常に困っていますので、どなたかご教授お願いします。    repaint()     ↓    update()  ←なぜかJavaから実行要求が来ない     ↓    paint()

    • ベストアンサー
    • Java
  • ホームページビルダー2001でJavaアプレットについて

    ホームページビルダー2001でJavaアプレットについておしえてください。 素材Javaアプレットで、LedBoard を使いたいのですが、 デフォルトでの「ホームページビルダーをお買い上げいただき・・・」の文字列を変えるにはどうすればいいのでしょうか? パラメータの変更がわかりません。 どうぞおねがします。

  • 文字列を取り出す。

    文字列で一行の中に ********* ******** *********** ********* のように間に空白の入っている文字列が あるのですが、 これの2番目をとってくるようにしたのですが、 良い方法が思い浮かびません。 Stringクラスのメソッドを見ているのですが、、、 お願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう