[解決済み] Graphicsのtranslateメソッド
2022-02-12 11:04:35
質問
最近、こんなものを見つけました。 こちら
public int print(Graphics g, PageFormat pf, int page) throws
PrinterException {
if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
*/
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY()); // line 2
g.drawString("Hello world!", 100, 100);
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
2行目がよくわからない
(コメント)
このスニペットの中で
(g2d.translate(pf.getImageableX(), pf.getImageableY());)
g2dは、参照元である
Graphics2d
と
translate
はGraphicクラスにあるメソッドです。では、どのように動作するのでしょうか?
どのように解決するのですか?
編集する。 Graphics2DはGraphicsの子クラスなので、translateメソッドはGraphics2DクラスとGraphicsクラスの両方に存在します。Graphicsの子クラスであるため、Graphicsのメソッド(translateを含む)をすべて実装しており、そのため動作しています。
例題のtranslateメソッドは、g2dの原点をpfの原点に移動させるために使われています。
基本的には、g2dの各点をpfの対応する点に平行移動させるよう、プログラムに指示します。
例えば、g2dが(0,0)から始まり、pfが(100,100)から始まるとして、変換後、g2dの(0,100)の点は、同じところから始まっていないので、pfの(0,100)の点、(100,200)になっていることになります。
わかりやすくするのに苦労していますが、もし意味がわからなければ、もっとうまく説明してみるか、答えを完全に削除して、他の人に説明してもらうことにします。
関連
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] javadocでメソッドを参照するには?
-
[解決済み] Androidで遅延後にメソッドを呼び出す方法
-
[解決済み] モックされたメソッドに渡された引数を返すようにする
-
[解決済み] Java のメソッド名を文字列で指定した場合、どのように呼び出すのですか?
-
[解決済み] メソッドの戻り値の型を汎用的にするにはどうすればよいですか?
-
[解決済み] いつ使うか。Java 8+のインターフェイスのデフォルトメソッドと、抽象的なメソッドの比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー:配列または java.lang.Iterable のインスタンスに対してのみ反復処理を行うことができます。
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】Gradleがtools.jarを見つけ出さない
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み】接続Java - MySQL : 公開鍵の取得は許可されていません。
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)